簡單C 問題,關於goto語句的錯誤用法

2025-01-01 16:20:14 字數 2653 閱讀 7808

1樓:

int ran;

ran=rand();

不是初始化,它是宣告與賦值語句。

int ran=rand();宣告 時就 給定數值,叫初始化。

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

轉向語句只允許轉向它的同層或外層。如果你把初始化部分用花括號括起來,讓它成為乙個內層,就允許了:

if(ans=='n') goto done;

int ran=rand();

done: return 0;

2樓:網友

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

如果goto跳過的**含有初始化就會視為錯誤,即便這個變數在這種情形下根本不會被使用。這麼做是毫無意義的。

int i = 0;這就是初始化,在宣告的時候用=賦予初始值。修改前後生成的**沒有區別。

3樓:網友

聽樓上大家的意見,應該是程式執行的層次問題吧"int ran:ran=rand()"裡的":"是包含的意思,整句意思是"intran"包含"ran=rand()"

4樓:網友

你把那個goto語句去掉試一下,如果沒有問題的話。

就應該是編譯器不知道程式應該怎麼樣處理的這樣問題。

因為前面有乙個跳轉語句,編譯器不知道是否應該給後面的變數ran進行初始化。

c語言中goto語句的用法??舉例來說。

5樓:精金框架妊奧

goto語句可以使程式在沒有任何條件的情況下跳轉到指定的位置,所以goto語句又被稱為是無條件跳虧簡轉語句。

它的語法如下。

goto label;

其它**。label:

其中,label為我們自己定義的乙個標籤,定義的規則與變數的命名相同,它的位置是不固定的,它可以寫在goto語句的後面,也可銷昌褲以寫在它的前面,然而goto語句只能在乙個函式內部跳轉,它並不允許跳轉出乙個函式外部。

int day = 1;

loop:if (day <=31)

printf("%d", day);

day++;

goto loop;

上面程式就是利用了goto和if語句來實現了迴圈功能,它與while實現的迴圈功能一樣,其中loop為我們定義的乙個label(標籤)。

c語言中goto語句的用法??舉例來說。

6樓:風若遠去何人留

goto語句也稱為無條件轉移語句,其一般格式如下:

goto 語句標號; 其中語句標號是按識別符號規定書寫的符號, 放在某一語句行的前面,標號後加冒號(:)語句標號起標識語句的作用,與goto 語句配合使用。

c語言不限制程式中使用標號的次數,但各標號不得重名。

goto語句的語義是改變程式流向, 轉去執行語句標號所標識的語句。

goto語句通常與條件語句配合使用。可用來實現條件轉移, 構成迴圈,跳出迴圈體等功能。

在結構化程式設計中一般不主張使用goto語句, 以免造成程式流程的混亂,使理解和除錯程式都產生困難。

以下例句,當i等於5時,程式轉向stop標籤處語句。

example of the goto statement

void main()

* this message does not print: */

printf( "loop exited. i = %d", i );

stop: printf( "jumped to stop. i = %d", i );

c語言中,我覺得goto語句很好用啊,在做一些判斷時很實用,但為什麼書上說寧願加強迴圈也不用goto語句?

7樓:杜耕順晏娟

goto語句是有害的觀點:

1968年,e·w·代克斯特拉首先提出「goto語句是有害的」論點,向傳統程式設計方法提出了挑戰,從而引起了人們對程式設計方法討論的普遍重視。

goto語句的爭論:

在60年代末和70年代初,關於goto語句的用法的爭論比較激烈。主張從高階程式語言中去掉goto語句的人認為,goto語句是對程式結構影響最大的一種有害的語句,他們的主要理由是:goto語句使程式的靜態結構和動態結構不一致,從而使程式難以理解,難以查錯。

去掉goto語句後,可直接從程式結構上反映程式執行的過程。這樣,不僅使程式結構清晰,便於理解,便於查錯,而且也有利於程式的正確性證明。

持反對意見的人認為,goto語句使用起來比較靈活,而且有些情形能提高程式的效率。若完全刪去goto語句,有些情形反而會使程式過於複雜,增加一些不必要的計算量。

關於goto語句的解決方法:

1974年,d·e·克努斯對於goto語句爭論作了全面公正的評述,其基本觀點是:不加限制地使用goto語句,特別是使用往回跳的goto語句,會使程式結構難於理解,在這種情形,應儘量避免使用goto語句。

8樓:初運旺茹辛

goto用起來是方便,但是破壞了程式的結構,你寫的時候可能很明白,但對以後的維護、其它人員的接手都是破壞性的。乙個良好的程式結構,比效率都重要,對乙個產品來說,可維護性的重要性是很高的,而goto語句正是這方面的大敵。

關於C幾個基本語句的問題先謝謝了

直接回答咯啊。1,this 指當前的類 在你的程式裡面指 person類 2,set訪問器時,表明屬性的值只能進行設定而不能讀出 get訪問器時,表明屬性的值是隻讀的,不能改寫 在你的程式裡面 get是獲取屬性,是自讀變數 set,就是將改變name的屬性 value 在不同的地方用途意思不一樣,在...

關於SQL語句的問題,關於SQL語句的問題,求解決

等同於count 就是分組的記錄總數 count 1 的那個1意思就是用一個長值欄位1來表示存在一條記錄用哪個數字都可以,這樣寫在欄位很多的情況下能更快 update lzhu set zaiwang select distinct zaiwang from kkkkk where kkkkk.ha...

c 的簡單問題,一個c 的簡單問題

i 與 i 的區別 1.i是先把 i 的自身值加1,再取i值參與運算。2.i 是先取 i 當前的值參與運算,等到該語句結束 遇到分號 後才加1 特別注意。如題 int i,j i 10 i i i 先取i當前值進行賦值運算,即i 10 10 20,等語句結束後i再自增兩次,即i為22 cout i ...