[求助] 还是有点糊涂
main()
{
unsined i=10,s;
int a=-24;
s=i+a;
printf("%d\n",i+a);
getch();
}
这个程序运行结果是多少呢?是-14还是一个很大的正数呢?
搜索更多相关的解决方案:
糊涂
----------------解决方案--------------------------------------------------------
都不是。因为这个程序不能运行!
----------------解决方案--------------------------------------------------------
unsigned.拼写错误.
----------------解决方案--------------------------------------------------------
main()
{
unsigned i=10;
int a=-24;
printf("%d\n",i+a);
getch();
}
能运行啊.是-14,但要是换成这样
main()
{
unsined b=10;
int a=-24,c;
(a+b>6)?(c=1):(c=0);
printf("%d\n",c);
getch();
}
结果就是1,可是这个时候为什么A+B就那么大呢?而上面却是-14.怎么回事
----------------解决方案--------------------------------------------------------
#include<stdio.h>
int main()
{
unsigned i=10,s;
int a=-24;
s=i+a;
printf("%d\n",i+a);
getchar();
return 0;
}
这样后结果14``
----------------解决方案--------------------------------------------------------
是-14,年自己可以运行一下,再说一下,unsined应该是unsigned.
----------------解决方案--------------------------------------------------------
答案是-14的原因在于你在printf("%d",i+a);中用了%d,s所以你的结果还是有符号的整型数据。
----------------解决方案--------------------------------------------------------
我想是这样的,printf("%d\n",i+a);输出-14是因为%d的原因,如果你用%u无符号输出就是4294967282;这正是
(a+b>6)?(c=1):(c=0);
printf("%d\n",c);的输出结果是1的原因,因为在进行运算a+b时是将一般的整型换成无符号型进行计算的.
----------------解决方案--------------------------------------------------------
i+a这个表达式求解过程中发生了隐式转换,int型的变量a自动转换成了unsigned int型,变量a变成了一个非常大的正整数,用printf("%d\n",i+a)输出就是-14,用printf("%u\n",i+a)输出就是一个非常大的正整数。。。
----------------解决方案--------------------------------------------------------