请教一个C语言问题
int i=-20;unsigned j=10;
请问 i+j 的值为多少,为什么? 简单, 编译一个看看不就清楚了, 若还困惑, 反汇编就一目了然了. #include<stdio.h>
void peasoup(int *green);
int main()
{
int i=-20;
unsigned int j=10;
printf("test is %d", i+j);
return 0;
} 使用软件 Dev c++
结果为 -10 多敲代码吧 ?=i+j;
得看结果给什么类型的啊,
一般来说编译器都会给足空间的 楼主是学习C语言中,还是在工程中遇见这个问题了啊?
C语言,找教材去。
工程中请把实例讲出来,这样大家一起分析,相互学习,共同进步。
我的同事这样编程,我很“鄙视他”! i+j的值要看你怎么定义。 3楼的程序不够严谨,因为%d 输出为int 型。自然得到的会是-10;
我的程序是这样的:
int main()
{
int a;
unsigned int b;
int i=-20;
unsigned int j=10;
a=i+j;
b=i+j;
while(1);
}
在调试窗口下得到 a=-10; b=4294967286; (32位计算机中 int 为32位)。
有符号的int i 与无符号的unsigned int j相加,i 要先转换成无符号的 这是一道笔试题,主要是考负数在内存中的存储方式
如果是在实际的工作中,这样编程肯定是不规范,也是不允许的
页:
[1]