伊莉討論區

標題: 詢問最後的a、b的值 [打印本頁]

作者: dlaedlae654    時間: 2022-6-26 03:20 PM     標題: 詢問最後的a、b的值

本帖最後由 dlaedlae654 於 2022-6-26 03:20 PM 編輯

詢問a和b最後輸出的值 ?

#include <iostream>
using namespace std;
int main()
{
int a=3, b=8;
if (a>2) int a=5;
else b=7;
}



作者: 58903    時間: 2022-7-2 12:30 AM

看起來又是作業題,這自己去執行就知道了
作者: ilikeatom    時間: 2022-7-8 04:15 AM

本帖最後由 ilikeatom 於 2022-7-8 04:16 AM 編輯

讓我們來看看你的條件是什麼
如果 a > 2, a就會等於5
否則(其實就是a<=2的意思)b等於7

所以你一開始宣告a = 3,就滿足 if 的條件,else就不會執行
結果就是a等於5,b不會變等於8

作者: hand79    時間: 2022-7-10 11:21 AM

a等於5,b等於8

你都有程式碼怎麼不自己跑...
作者: asd77885600    時間: 2022-7-25 07:55 AM

樓上都說錯了吧
在if/for 裡宣告變數的話 執行完if/for 變數的生命週期就消失了
所以最後的輸出只看得到a=3 b=8
作者: yynnyyee    時間: 2023-2-27 02:41 AM

我看到您正在寫C++程式碼,並想知道a和b的值。這是一個有趣的問題,因為它涉及到變數的作用域(scope)。在這個程式碼中,有兩個不同的a變數:一個是在main函數中宣告的,另一個是在if語句中宣告的。當if語句為真時,後者會遮蔽(shadow)前者,使其無法被訪問。因此,在if語句中,a的值是5,而不是3。但是,在if語句之外,a仍然保持3的值,因為後者只存在於if語句的作用域中。

b變數則沒有這種問題,因為它只有一個宣告。如果if語句為真,b的值不會改變;如果if語句為假,b的值會被賦值為7。

所以,在這個程式碼中,a和b最後輸出的值取決於if語句是否成立。如果成立(也就是a>2),那麼a=3, b=8;如果不成立(也就是a<=2),那麼a=3, b=7。




歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!