#include<stdio.h>
int main(void)
{
signed int signedNum;
unsigned int unsignedNum;
signedNum=4294967295;
unsignedNum=4294967295;
printf("%d\n", signedNum);
printf("%u\n", signedNum);
printf("%d\n", unsignedNum);
printf("%u\n", unsignedNum);
return 0;
}
运行上面的程序(GCC编译),发现输出signedNum与unsignedNum结果是一样的,请问各位大神用unsigned修饰char, int, long有什么用呢?signed 与 unsigned有什么不同呢?
参与什么运算呢?跪求例子。另外,既然“两个变量实际保存的内容是一样的”, 也就是在内存中他们是相同的二进制码,那么我还有必要用unsigned来修饰吗?C语言为什么还要保留unsigned 与signed呢?当然,其实我还是觉得unsigned 在c++中是有用的,因为如果用cout输出,要知道数据类型的。但是在C中,只要我用printf且正确选定%d还是%u,那么不管它是int 还是 unsigned int,我都可以得到正确的结果。
追答“选定%d还是%u,那么不管它是int 还是 unsigned int,我都可以得到正确的结果”
这说法没错。
这是C/C++的灵活性和容错能力。
但实际上,你的数字不是只有printf一种用途啊,比如在你绑定控件等功能的时候,它可没有给你格式化的功能,是按照你实际定义的类型来显示的。
而且,在程序阅读上,
你int i = 4294967295;看着舒服吗,容易理解吗?
int i=-1一目了然。