C++查缺补漏2,赶紧的
先来看一段代码把: #include <iostream> #include <typeinfo> using namespace std; void foo(void) { unsigned int a = 6; int b = -20; (a+b > 6) ? puts("> 6") : puts("<= 6"); } int _tmain(int argc, _TCHAR* argv[]) { foo(); unsigned int c=1; int d=-5; cout<<typeid(d+c).name()<<endl; cout<<d+c<<endl; return 0; } 输出的结果是: 有没有一点吃惊? 这个问题测试你是否懂得C语言中的整数自动转换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是 ">6"。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结...