当前位置:系统粉 > 电脑问答 > 其他问答 > 关于C语言的赋值表达式的一个程序例子,问题出在什么地方?

关于C语言的赋值表达式的一个程序例子,问题出在什么地方?

提问者:d风花1雪月l  |  浏览 次  |  提问时间:2017-01-17  |  回答数量:9

关于C语言的赋值表达式的一个程序例子,问题出在什么地方? 谭浩强《C程序设计(第三版)》一书中,“3.9 赋值运算符和赋值表达式”一节里,在谈到赋值表达式“左右值”和表达式的“嵌套”(只是自己的一种理解,书中的意思是“表达式中的‘表达式’也可以是一个赋值表达式”)时,提到了一个例子:(a=3*5)=4*3!  我将这个表达式写成了一个小程序,但结果却与谭浩强的结果是不同的。void main(){int a;(a=3*5)=4*3;printf(\"%d\\n\",a);}  结果:5  但书中的正确值是:12,虽然是先计算括号中的3*5=15,但是,4*3=12这个值最后赋给a,得出最终值![s:471]  我这个小程序是怎么回事呢?什么地方出问题了?

已有9条答案
青椒炒肉花

青椒炒肉花

回答数:129  |  被采纳数:24

2017-01-17 03:58:34
显示是12的啊.....
你用啥编译的>?
赞 12
孙天骁

孙天骁

回答数:138  |  被采纳数:4

2017-01-17 06:16:40
貌似这程序错了。根本就编译不了.........你确定写对了吗?
赞 13
4318雷

4318雷

回答数:191  |  被采纳数:109

2017-01-17 09:54:51
(a=3*5)=4*3;
======
这叫嵌套?? [s:472] 貌似我C都忘光了.
赞 19
吴先生753

吴先生753

回答数:112  |  被采纳数:113

2017-01-17 07:07:10
我VC6.0编译通过!
赞 11
dwegasd

dwegasd

回答数:8  |  被采纳数:0

2017-01-17 13:44:23
感觉这种嵌套的格式没见过额.....很奇怪的感觉
赞 0
痛是无法选择的

痛是无法选择的

回答数:98  |  被采纳数:38

2017-01-17 20:17:30
C++方式编译
看汇编代码就知道怎么回事了
4:int a;
5:
6:(a=3*5)=4*3;
0040B468 mov dword ptr [ebp-4],0Fh //a=15
0040B46F mov dword ptr [ebp-4],0Ch //a=12
7:printf("%d\n",a);
0040B476 mov eax,dword ptr [ebp-4]
0040B479 push eax
0040B47A push offset string "%d\n" (0041f01c)
0040B47F call printf (0040b700)
0040B484 add esp,8
8:}
所以最后a=12
C语言方式编译不通过:(a=3*5)=4*3;
error C2106: '=' : left operand must be l-value
因此楼主用的不是C语言!
如果这真是那本书里写的话,应该是作者错了。
赞 9
譕訫酱

譕訫酱

回答数:60  |  被采纳数:71

2017-01-17 14:24:50
#include<stdio.h>

void main()
{
int a;
(a=3*5)=4*3;
printf("%d\n",a);

}

VC6.0编译通过!!!!
结果为12
赞 6
472697200

472697200

回答数:109  |  被采纳数:120

2017-01-17 12:20:38
这个程序是自己试着写的!
  运行后的结果与谭浩强的结果有出入,所以才来向各位请教!

  看看我这个程序是什么地方出了问题!!

  我用的平台是:TC 2.0
赞 10
oo喵了o个咪oo

oo喵了o个咪oo

回答数:64  |  被采纳数:143

2017-01-17 12:17:21
```学习中```
赞 6
解决方法
版权信息

Copyright @ 2011 系统粉 版权声明 最新发布内容 网站导航