
下列程序的输出结果为( )#include <stdio.h> int main() { int x; printf("%d",x == (1 && x)); }
5个回答
展开全部
未知。。X是个随机值。
顺带:运行的时候会直接报错的。
顺带:运行的时候会直接报错的。
展开全部
跟编译器的特征有关,有些编译器会把未初始化的局部变量默认成0,因此1&&x的结果必定为0,然后执行比较x与0是否相等,结果为真,因此最终输出为1。而有些编译器则不会,那么最终输出结果就为0 。
为了证实我的经验,特意做了一个小试验,VS2008的nmake把x初始化成了0x785BB6F0,我也搞不懂为什么不是-1而是这么个诡异的数字。虚拟机懒得开了,不然可以用GCC的make再试一下看看它又是怎么初始化的,还可以试试QT的qmake,搞不好又是一种情况
为了证实我的经验,特意做了一个小试验,VS2008的nmake把x初始化成了0x785BB6F0,我也搞不懂为什么不是-1而是这么个诡异的数字。虚拟机懒得开了,不然可以用GCC的make再试一下看看它又是怎么初始化的,还可以试试QT的qmake,搞不好又是一种情况
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-06-15
展开全部
C语言中未初始化的变量都是0,因此 (1 && x)值为0,判断x是否和0相同,判断正确,输出结果为1
这是我的理解,但是总感觉怪怪的
又感觉运行的时候会提示你对X进行赋值,因为这个X不是全局变量,C语言中对全局变量的初始值有规定,局部的没有。
都快忘完了。。。不好意思
这是我的理解,但是总感觉怪怪的
又感觉运行的时候会提示你对X进行赋值,因为这个X不是全局变量,C语言中对全局变量的初始值有规定,局部的没有。
都快忘完了。。。不好意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个我在某个XX书屋作为验证吗;想了想要不是1就是0,先搞了1提示错误,后来0对了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
0
追问
您能详细的讲解一下过程吗?
追答
是这样,当x为0或1时,输出1
其它情况输出0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询