c语言 求解输入二进制11111111,如何输出十进制的-1?

#include<stdio.h>

int main(){
    int a=0b11111111;
    printf("%d",a);
}

此代码运行出的a的值为255,什么情况才会输出-1?


#include <stdio.h>
#include <math.h>
 
int convertBinaryToDecimal(long long n);
 
int main()
{
    long long n;
    printf("输入一个二进制数: ");
    scanf("%lld", &n);
    printf("二进制数 %lld 转换为十进制为 %d", n, convertBinaryToDecimal(n));
    return 0;
}
 
int convertBinaryToDecimal(long long n)
{
    int decimalNumber = 0, i = 0, remainder;
    while (n!=0)
    {
        remainder = n%10;
        n /= 10;
        decimalNumber += remainder*pow(2,i);
        ++i;
    }
    return decimalNumber;
}

int a=0b11111111;改成 int a=-0b00000001;试试。很少有编译器支持用二进制给变量赋值。
参考:

C语言二进制、八进制、十六进制整数书写和输出_C语言技术网-码农有道-CSDN博客_c语言输出二进制八进制十六进制 文章目录一、二进制、八进制、十六进制整数的书写1、二进制2、八进制3、十六进制4、需要注意的坑二、二进制、八进制、十六进制整数的输出四、版权声明整数是我们生活中常用的数据类型,也是编程中常用的一种数据,C语言用int关键字来定义整数变量(int 是 integer 的简写)。在定义变量的时候,可以加signed、unsigned、short和long四种修饰符。signed:有符号的,可以表... https://blog.csdn.net/wucz122140729/article/details/105603767?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-3-105603767.pc_agg_new_rank&utm_term=c%E4%BA%8C%E8%BF%9B%E5%88%B6+%E8%B5%8B%E5%80%BC&spm=1000.2123.3001.4430

只有长度为一个字节的数据类型才会输出-1 比如 char类型

#include<stdio.h>
int main(){
    char a=0b11111111;
    printf("%d",a);
}

img

如有帮助,望采纳!谢谢!