當前位置:係統粉 > 電腦問答 > 其他問答 > 關於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 係統粉 版權聲明 最新發布內容 網站導航