你能想到'一个程序',它为C和C ++编译器提供了“不同的输出”(但是在同一种语言下提供了一致的输出)?
答案 0 :(得分:20)
Incompatibilities between ISO C and ISO C++
一个常见的例子是sizeof('A')
,它在C中通常是4,但在C ++中总是1,因为像'A'
这样的字符常量在C中的类型int
但类型{{1在C ++中:
char
答案 1 :(得分:19)
该程序在C ++或C99中生成12
,在C89中生成6
:
#include <stdio.h>
int main()
{
int a = 12//**/2;
;
printf("%d\n", a);
return 0;
}
答案 2 :(得分:9)
int main() { return sizeof 'a'; }
答案 3 :(得分:5)
typedef char X;
int main() {
struct X { double foo; }
printf("%d\n", sizeof(X));
return 0;
}
答案 4 :(得分:4)
从wikipedia开始,改变以生成每种语言的一致输出:
extern int T;
int size(void)
{
struct T { int i; int j; };
return sizeof(T) == sizeof(int);
/* C: return 1
* C++: return 0
*/
}
答案 5 :(得分:3)
int class;
不能用C ++编译,而是用C语言编译。
答案 6 :(得分:2)
#include <stdio.h>
int main(void)
{
#ifdef __cplusplus
puts("C++");
#else
puts("C");
#endif
return 0;
}