c语言中相同代码的不同答案
这段代码中发生了什么c语言中相同代码的不同答案,c,gcc,g++,C,Gcc,G++,这段代码中发生了什么 #include <stdio.h> int main(){ int e; printf("%d ", e); printf("%s", e); return 0; } e会有吗 垃圾值? b空 在GCC中显示垃圾值,在g++中显示0和NULL。 谢谢 此程序调用未定义的行为。在第二条printf语句中,对int数据类型使用了错误的格式说明符。别指望有什么好结果。还请注意,e未初始化,其值不确定。这两个语句都调用未定义的行为,
#include <stdio.h>
int main(){
int e;
printf("%d ", e);
printf("%s", e);
return 0;
}
e会有吗
垃圾值?
b空
在GCC中显示垃圾值,在g++中显示0和NULL。
谢谢 此程序调用未定义的行为。在第二条printf语句中,对int数据类型使用了错误的格式说明符。别指望有什么好结果。还请注意,e未初始化,其值不确定。这两个语句都调用未定义的行为,因为e对象未初始化,因此其值不确定 第二条语句也有错误的转换说明符,%s规范需要char*参数
因此,正如有人在评论中提到的,正确的答案不是a或b,而是c恶魔飞出你的鼻子。编译此程序时生成警告: 警告:格式“%s”要求参数类型为“char”,但参数2的类型为“int”[-Wformat=] printf%s,e;* 在这两种情况下,它都会生成垃圾值 通用条款: g++:
你怎么认为?也就是说,g++是GCC的一部分,那么您真正的问题是什么呢?正确答案:c dragonsIt可能是。但是,如果您使用gcc-Wall-Wextra-g编译,您将收到警告