您能否想到'程序'给出'C和C++编译器的不同输出'(但在同一种语言下给出了一致的输出)?针对不同编译器的不同输出 - C和C++
回答
此程序产生用C 12
++或C99,和6
在C89:
#include <stdio.h>
int main()
{
int a = 12//**/2;
;
printf("%d\n", a);
return 0;
}
尽管确切的说,我把它看作是一个黑客:)虽然不错。 – 2011-03-29 06:40:25
但是,这并没有真正回答这个问题吗?它在C和C++中产生相同的输出(C99毕竟是当前的C标准)。 – 2011-10-17 05:09:20
@KeithThompson:是的,[ecik's answer](http://stackoverflow.com/questions/5467576/different-output-for-different-compiler-c-and-c/5469636#5469636)是一个更准确的匹配题。 – caf 2011-10-17 05:15:23
int class;
用C不会编译++和将在C.
哇!很多想法都在一个地方......不错.. – Aditya369 2011-03-29 05:37:06
问题是关于程序输出,而不是编译器输出。 – 2011-03-29 08:17:43
int main() { return sizeof 'a'; }
完美简洁! – GManNickG 2011-03-29 03:39:30
但不完美的便携式。如果'sizeof(int)== 1'(只有在'CHAR_BIT> = 16'时才有可能)'sizeof'a''可以是1。 – 2011-10-17 05:05:30
Incompatibilities between ISO C and ISO C++
一个常见的例子是sizeof('A')
,这通常是4 C,但总是1在C++编译,因为字符类似于'A'
的常量在C中具有类型int
,但在C++中具有类型char
:
#include <stdio.h>
int main(void)
{
printf("%d\n", sizeof('A'));
}
运算符'sizeof'返回'size_t'而不是'int'。所以你的代码包含错误。 http://stackoverflow.com/questions/940087/whats-the-correct-way-to-use-printf-to-print-a-size-t – UmmaGumma 2011-03-29 19:20:54
和'sizeof(int)'可能是1. – 2012-01-02 18:48:44
typedef char X;
int main() {
struct X { double foo; }
printf("%d\n", sizeof(X));
return 0;
}
缺少' #include
从wikipedia,改变以产生在每一种语言一致的输出:
extern int T;
int size(void)
{
struct T { int i; int j; };
return sizeof(T) == sizeof(int);
/* C: return 1
* C++: return 0
*/
}
这将根据语言返回不同的状态,但不会生成任何*输出*。 – 2015-02-19 15:58:14
#include <stdio.h>
int main(void)
{
#ifdef __cplusplus
puts("C++");
#else
puts("C");
#endif
return 0;
}
预处理器是该语言的一部分吗? – harper 2011-10-17 05:45:01
@harper:是的。它是C99标准的第6.10节,C++标准的第16节。 – 2011-10-17 06:02:06
- 1. 与Dev-C++和xcode编译器不同的输出
- 2. C++:相同的代码和编译器,但每次构建后输出不同
- 3. C/C++用不同的编译器编译程序的不同部分
- 4. 调试和编译C++程序后的不同输出
- 5. 不同的编译器,不同的输出?
- 6. 编译器之间的不同输出
- 7. 跨不同编译器的C++库
- 8. 在不同编译器上产生不同输出的代码
- 9. 不同编译器上的输出不同
- 10. 的Python对C:不同的输出
- 11. 获取从不同C编译器
- 12. 输入奇怪的输出为char *与不同的编译器
- 13. 为什么不同的C编译器为C程序提供不同的输出?
- 14. 同一指针表示不同的编译器不同的尺寸
- 15. 相同的代码,在C#不同的输出和C++
- 16. 针对测试和主要的不同maven编译器版本
- 17. 不同的C编译器给出不同的结果合并排序
- 18. 相同的C源,不同的输出
- 19. 从SQL Server和C#的输出不同
- 20. Pascal和C:不同的输出
- 21. 对于不同的编译器,C++模板类的行为不同
- 22. C++代码显示不同的,这是意想不到的,在不同的编译器中输出
- 23. 不同的方法针对不同的输出
- 24. C#输出与断点输出不同
- 25. C++指针比较器不编译
- 26. Inno setup编译器:针对不同语言的不同类型描述
- 27. 使用Visual C++与不同的C++编译器?
- 28. 针对不同的窗口C#
- 29. 针对不同平台的C#GUID
- 30. C代码给出不同的输出
这是一个愚蠢的面试问题 – 2011-03-29 07:47:27