请高手解释一下这个小程序。谢谢。

z99537619 2005-10-03 10:50:28
main()
{
int p,a=5;
if(p=a!=0)\\主要是这句话不清楚。。。。
printf("%d\n",p);
else
printf("%d\n",p+2);
...全文
457 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
antijpn 2005-10-04
  • 打赏
  • 举报
回复
丢到新手乐园去……
A_Knuth_A 2005-10-04
  • 打赏
  • 举报
回复
main()
{
int p,a=5;
if(p=a!=0)\\主要是这句话不清楚。。。。
printf("%d\n",p);
else
printf("%d\n",p+2);
首先,我们要清楚,p=a!=0是一个条件表达式,这里需要判断运算符的优先级,赋值运算符(=)的优先级要高于不等于运算符(!=),所以该条件表达式的值应该为p=a(赋值) => p=5(变量p的值此时为5);p!=0判断语句,因为p==5!=0,所以p=a!=0的最终值为真,即为1,所以if后的语句被执行,打印结果为:
5
这种用法的具体情况有时还取决于你的具体编译环境,如果不清楚,就去看汇编代码了,跟踪变量肯定会知道正确结果的。
liuzewei 2005-10-03
  • 打赏
  • 举报
回复
if(p=a!=0)\\主要是这句话不清楚。。。。
这一句:首先判断是否等于0,如果等于将0值传给p,如果不等于将1值传给p
然后跟句p=1还是0判断条件是否成立
province_ 2005-10-03
  • 打赏
  • 举报
回复
优先级我是记不住的就用()包起来,避免麻烦。
snowbirdfly 2005-10-03
  • 打赏
  • 举报
回复
上面的写作风格比较差~~~
if(p=a!=0)\\主要是这句话不清楚。。。。
运算的顺序为p = (a != 0)
本题为p = 1,上面已经讲清楚了~~
healer_kx 2005-10-03
  • 打赏
  • 举报
回复
楼上说得对。
  • 打赏
  • 举报
回复
同意K() ==》这个是谁写的? 这种风格很烂
=号运算符是右结合的
K 2005-10-03
  • 打赏
  • 举报
回复
这个是谁写的? 这种风格很烂

p=(a!=0);
a!=0;//5!=0; =1
p=1;

RobinWen 2005-10-03
  • 打赏
  • 举报
回复
考试归考试嘛。考试可以用一些比较BT的东东来考察是否掌握了一些哪怕是很细节的规则,但是这并不是说我们实际写程序的时候就要用这些噻。
jinweifu 2005-10-03
  • 打赏
  • 举报
回复
虽然各位不支持这样的风格 但是考试就是这么考的 悲哀啊
jiatengxue 2005-10-03
  • 打赏
  • 举报
回复
谭浩强那本书上有些特意指明很简捷的代码,在实际中很不适用,非常容易出错,除非你是像谭浩强那样的牛人!
billiards 2005-10-03
  • 打赏
  • 举报
回复
。。。。。。。。。。。。。。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧