第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

簡(jiǎn)單C++問題,關(guān)于goto語句的錯(cuò)誤用法?

簡(jiǎn)單C++問題,關(guān)于goto語句的錯(cuò)誤用法?

如下程序:#include<iostream>#include<cstdlib>using namespace std;int main(){cout<<"Compute a random number?(y/n)";char ans;cin>>ans;if(ans=='n')goto done;int ran=rand();done:return 0;}為什么將語句:int ran=rand();改成:int ran; ran=rand();就對(duì)了?書中解釋為:一個(gè)需要初始化的變量,只要它在作用域內(nèi),就必須保證已經(jīng)對(duì)其進(jìn)行過初始化了。怎樣理解這句話,修改前后的句子有什么不同?何謂初始化?謝謝回答!
查看完整描述

3 回答

?
小怪獸愛吃肉

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊

int ran;
ran=rand();
不是初始化,它是聲明與賦值語句。

int ran=rand(); 聲明 時(shí)就 給定數(shù)值,叫初始化。

if(ans=='n') goto done; 轉(zhuǎn)向語句不允許 跳過一個(gè) 同一層的 含 初始化 的區(qū)域。

轉(zhuǎn)向語句只允許轉(zhuǎn)向它的同層或外層。如果你把初始化部分用花括號(hào)括起來,讓它成為一個(gè)內(nèi)層,就允許了:
if(ans=='n') goto done;
{ int ran=rand(); };
done: return 0;

查看完整回答
反對(duì) 回復(fù) 2019-03-26
?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊

這個(gè)基本上可以視為編譯器bug, intel編譯器也有這種問題,而微軟編譯器就沒有。

如果goto跳過的代碼含有初始化就會(huì)視為錯(cuò)誤,即便這個(gè)變量在這種情形下根本不會(huì)被使用。這么做是毫無意義的...

int i = 0;這就是初始化,在聲明的時(shí)候用=賦予初始值。修改前后生成的代碼沒有區(qū)別。

查看完整回答
反對(duì) 回復(fù) 2019-03-26
?
慕后森

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

你把那個(gè)goto語句去掉試一下,如果沒有問題的話
就應(yīng)該是編譯器不知道程序應(yīng)該怎么樣處理的這樣問題
因?yàn)榍懊嬗幸粋€(gè)跳轉(zhuǎn)語句,編譯器不知道是否應(yīng)該給后面的變量ran進(jìn)行初始化

查看完整回答
反對(duì) 回復(fù) 2019-03-26
  • 3 回答
  • 0 關(guān)注
  • 967 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)