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)); 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次,沒有差別。而下面的語句 ... i 5表示先取i的值和5比較,然後再執行 操作,所以,當i 5的時候不滿足while條件而退出迴圈,然後還會執行一次 操作,所以i 6 while i 5 在後來 先自取i的值和5比較,然後i自動加1 當i 4時,執行4 5,成立,i變成5執行5 5,不成立,你怎麼知道不成立?因為執行了這個表示式,... 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....c語言中的for語句和ni語句,C語言中的for語句和n i 語句
在C語言中定義int i 1執行語句while i5 後i的值為6,為什麼
C語言關於巨集定義的習題,C語言中關於巨集定義的一道計算題