a_2012_m 发表于 2012-10-17 08:44:37

请教一个C语言问题

        int i=-20;
        unsigned j=10;
请问 i+j 的值为多少,为什么?

lkm_unication 发表于 2012-10-17 08:47:42

简单, 编译一个看看不就清楚了, 若还困惑, 反汇编就一目了然了.

luojiyin 发表于 2012-10-17 09:15:42

#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    多敲代码吧

graycker 发表于 2012-10-17 09:19:56

?=i+j;
得看结果给什么类型的啊,
一般来说编译器都会给足空间的

lvyunzeng 发表于 2012-10-17 09:24:07

楼主是学习C语言中,还是在工程中遇见这个问题了啊?
C语言,找教材去。
工程中请把实例讲出来,这样大家一起分析,相互学习,共同进步。
我的同事这样编程,我很“鄙视他”!

sco518 发表于 2012-10-17 10:01:12

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位)。

lyjian 发表于 2012-10-17 10:25:44

有符号的int i 与无符号的unsigned int j相加,i 要先转换成无符号的

a_2012_m 发表于 2012-10-17 11:13:52

这是一道笔试题,主要是考负数在内存中的存储方式
如果是在实际的工作中,这样编程肯定是不规范,也是不允许的
页: [1]
查看完整版本: 请教一个C语言问题