亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么輸出的全是“成績為優”

#include<stdio.h>

#include<iostream>

int main() {

int a;

std::cin >> a;

if (90 <= a <=100) {

printf("成績為優!");

}

else if (75<= a <90) {

printf("成績為良!");

}

else if (60<= a < 75) {

printf("成績為中!");

}

else if(0 <= a <60) {

printf("成績為差!");

}

return 0;

}



正在回答

1 回答

因為慕課網這個運行程序沒有終端,也就是說程序在執行到 std::cin >> a; 這句代碼的時候沒辦法獲取輸入,所以變量 a 應該沒有被賦值,也就是說它的值是個隨機值,可以把它的值打印出來:
https://img1.sycdn.imooc.com/659abf520001483a21941220.jpg
可以看到變量 a 的值是 21990,是大于 90 的,另外“輸出的全是優”這個問題的關鍵在于:
在 C++ 中,部分數學判斷表達式是不能直接寫的,不符合程序語法,例如:

90 <= a <= 100 就是個錯誤的寫法,正確的寫法是:a >= 90 && a <= 100 。
你的 “90 <= a <= 100?”的寫法其實相當于一個表達式,即:(90 <= a) <= 100。程序執行時候是從左向右讀取和執行的,所以先會讀取?90 <= a 的結果,因為 a = 21990 是 >= 90 的,所以?(90 <= a) 的值就是 1,而 1 <= 100 又是 true,所以最終的結果是 1,因為條件為真,所以會執行到這個分支。
同時,由于 if-else 分支的語法特性,只會執行一個分支,所以在 if 條件為真的時候,只會執行 if 分支,其他的 else if 和 else 分支就不會執行了,所以導致了?“輸出的全是優”。
可以自己打印下這個結果看下:
https://img1.sycdn.imooc.com/659ac1bb0001771121780856.jpg

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
趣味 C++ 入門
  • 參與學習       32230    人
  • 解答問題       195    個

C++ 入門,開啟趣味學習之旅,揭開 C++ 的神秘面紗,讓你不再望而生畏。

進入課程

為什么輸出的全是“成績為優”

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號