係統粉 > 電腦問答 > 其他問答

已解決關於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

顯示是12的啊.....
你用啥編譯的>?
2017-01-17 03:58:34
讚 12
孫天驍

孫天驍

回答數:138  |  被采納數:4

貌似這程序錯了。根本就編譯不了.........你確定寫對了嗎?
2017-01-17 06:16:40
讚 13
4318雷

4318雷

回答數:191  |  被采納數:109

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

吳先生753

回答數:112  |  被采納數:113

我VC6.0編譯通過!
2017-01-17 07:07:10
讚 11
dwegasd

dwegasd

回答數:8  |  被采納數:0

感覺這種嵌套的格式沒見過額.....很奇怪的感覺
2017-01-17 13:44:23
讚 0
痛是無法選擇的

痛是無法選擇的

回答數:98  |  被采納數:38

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語言!
如果這真是那本書裏寫的話,應該是作者錯了。
2017-01-17 20:17:30
讚 9
譕訫醬

譕訫醬

回答數:60  |  被采納數:71

#include<stdio.h>

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

}

VC6.0編譯通過!!!!
結果為12
2017-01-17 14:24:50
讚 6
472697200

472697200

回答數:109  |  被采納數:120

這個程序是自己試著寫的!
  運行後的結果與譚浩強的結果有出入,所以才來向各位請教!

  看看我這個程序是什麼地方出了問題!!

  我用的平台是:TC 2.0
2017-01-17 12:20:38
讚 10
oo喵了o個咪oo

oo喵了o個咪oo

回答數:64  |  被采納數:143

```學習中```
2017-01-17 12:17:21
讚 6
相關問答
最新其他問答
解決方法