jbbppa 发表于 2012-7-6 09:56

关于类型转换

如下
char foo(void)
{
   unsigned int a=6;
   int b=-20;
   char c;
   (a+b>6)?(c=1):(c=0);
   return c;
}
此程序运行结构为1;由于a+b类型转换成了unsigned int变成了4293967382,可是我要在哪个地方加入一个什么样的打印语句才能看到这个结果?我直接在char c后面加入printf(“%d”,a+b)结果显示却是-14

sedatefire 发表于 2012-7-6 10:05

最好这样写比较稳妥
((a+b)>6)?(c=1)c=0);

混合数据类型运算,编译器以“尽最大限度保持值完整性”为原则
你这个打印结果正常啊,我不知道你想问什么

sedatefire 发表于 2012-7-6 10:06

printf(“%d”,a+b)结果显示却是-14
你%u就不会是-14了
页: [1]
查看完整版本: 关于类型转换