C語言定義語句正確與否的判斷

2025-05-10 05:55:13 字數 1826 閱讀 3494

1樓:匿名使用者

答案是da,c不對,因為s是指向了記憶體的指標,而且指定了大小,陣列初始化樓主應該瞭解吧,肯定不是這樣世塌。

b不對是鬧基因為c語言沒有這樣初始化陣列的(這就是語法),而且貌似還少些了乙個引號。

d是c語言允許的,實際操作是將這個字元液返謹陣列(串)的首位址複製給s,s是乙個指標,指向了這個字串,訪問時按位址訪問下去,直到遇到'\0'作為結束,記憶體未知容易出現問題。

char s=book!";

char s=

char s[10];strcpy(s,"book!")

char *s="book!" 或char *s;s="book!";

這條看似無理,但是是c語言支援的,而且使用廣泛。

都是正確的。

如果是我使用的話會是:

char s[10+1];

memset(s,0,sizeof(s));

strcpy(s,"book!")

沒別的,安全。

c語言語法錯誤和語義錯誤有什麼區別,麻煩舉個例子

2樓:萌萌水月喵

語法錯誤可以看作是編碼出現了違反c語言規則的錯誤,一般編譯或者鏈結時,都會報錯的。

而語義錯誤,也可以叫做邏輯錯誤,也就是說你的**完全符合c語言的規範,不會出現編譯/鏈結的錯誤,但是,在邏輯上有錯誤。

舉個簡單的例子,加入編乙個**來統計int陣列a的成員總和,成員總數為n:

for(int i=0;isum=sum+a[i];

for(int i=0;i<=n;i++)//這裡多了乙個i=n的取值,這是語義錯誤。

sum=sum+a[i];

3樓:力震烏長鈺

答案是d

a,c不對,因為s是指向了記憶體的指標,而且指定了大小,陣列初始化樓主應該瞭解吧,肯定不是這樣。

b不對是因為c語言沒有這樣初始化陣列的(這就是語法),而且貌似還少些了乙個引號。

d是c語言允許的,實際操作是將這個字元陣列(串)的首位址複製給s,s是乙個指標,指向了這個字串,訪問時按位址訪問下去,直到遇到'\0'作為結束,記憶體未知容易出現問題。

chars=book!";

chars=char

s[10];strcpy(s,"book!")char

s="book!"

或chars;s="book!";

這條看似無理,但是是c語言支援的,而且使用廣泛都是正確的。

如果是我使用的話會是:

chars[10+1];

memset(s,0,sizeof(s));

strcpy(s,"book!")

沒別的,安全。

4樓:犁煊鮑佩玉

c是錯誤的a、t

等價於tt類似的還有。

b、kij加上括號就好看了kij

也就是將i跟。

j比較的布林值賦值(相等則真。

1,不等則假。

0)給kc、a

bc等價於abc

不能給b+c這樣的表示式賦值(因為b+c得到的是乙個常量),所以不正確。

關於c語言的問題,正誤判斷

5樓:北極沒有雪

x = a>b>c;後面這個比較的順序是a先和b比較, 然後結果再和c比較。

對於你這道題。i= 40

6樓:

c就沒有這種語法,不能這麼寫:i = 40 < x < 60;

你應該這麼寫:i = ((x > 40) &x < 60));

c語言中的for語句和ni語句,C語言中的for語句和n i 語句

n 這種形式是字尾自增1運算,表示先使用n值,然後n n 1自增1 i這種形式是字首自增1運算,表示先對i進行i i 1自增1,然後再使用i值 如果是單獨執行這樣的語句,兩者沒有區別,如 for i 0 i 輸出0 9 與for n 0 n 輸出0 9 這兩者都會迴圈10次,沒有差別。而下面的語句 ...

在C語言中定義int i 1執行語句while i5 後i的值為6,為什麼

i 5表示先取i的值和5比較,然後再執行 操作,所以,當i 5的時候不滿足while條件而退出迴圈,然後還會執行一次 操作,所以i 6 while i 5 在後來 先自取i的值和5比較,然後i自動加1 當i 4時,執行4 5,成立,i變成5執行5 5,不成立,你怎麼知道不成立?因為執行了這個表示式,...

C語言關於巨集定義的習題,C語言中關於巨集定義的一道計算題

fudgf 5 x 等價於 2.84 y x,此時y 5,x 2 故結果為 2.84 5 2 12.84 轉為整型即為12,你理解錯了,如果將 define fudgf y 2.84 y 定義成 define fudgf y 2.84 y 這樣算出來的結果即為15 define fudgf y 2....