c中相同代码的不同答案

ufh*_*fhf -4 c gcc g++

这段代码会发生什么?

#include <stdio.h>

int main(){
    int e;
    printf("%d ", e);
    printf("%s", e);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

e会有a)垃圾值吗?b)NULL

在GCC中它显示垃圾值,在g ++中它显示0和NULL.谢谢!!

hac*_*cks 5

该程序调用未定义的行为.您int在第二个printf语句中使用错误的格式说明符作为数据类型.不要指望任何好处.另请注意,e未初始化且其值不确定.


oua*_*uah 5

两个语句都调用未定义的行为,因为e对象未初始化,因此其值是不确定的.

第二个语句也有错误的转换说明符,%s规范需要一个char *参数.

因此,正如评论中提到的那样,正确的答案既不是a)也不是b)而是c)恶魔飞出你的鼻子.