C語言問題

時間 2022-10-12 13:00:12

1樓:

樓上答案有問題

在c中陣列的宣告中只有第一維是可以省略的,如果在宣告時不賦值,則哪一維都不可省略,這和c在記憶體中儲存陣列的方式有關

上面的a是錯誤的,因為編譯器無法知道這是一個3*幾的二維陣列,也就是結果不確定,你可以是3*3的,也可能是3*2的,計算機是不能容許在邏輯上不確定的,所以編譯器會給出錯誤

而b是正確的,因為編譯器清楚地知道它的每一行有三個元素,這樣上面的**就會產生一個int c[1][3]的陣列,如果你定義int c[3]=;那麼就會生成一個int c[2][3],不會存在邏輯二義性,所以是符合語法規範的

你可以在機器上試著編譯一下

2樓:

第一維是可以省略 因為編譯器無法知道這是一個3*幾的二維陣列,也就是結果不確定,你可以是3*3的,也可能是3*2的,計算機是不能容許在邏輯上不確定的,所以編譯器會給出錯誤

而b是正確的,因為編譯器清楚地知道它的每一行有三個元素,這樣上面的**就會產生一個int c[1][3]的陣列,如果你定義int c[3]=;那麼就會生成一個int c[2][3],不會存在邏輯二義性,所以是符合語法規範的 !找一個c方面的書一看就知!

3樓:

上面的a是錯誤的,因為編譯器無法知道這是一個3*幾的二維陣列,也就是結果不確定,你可以是3*3的,也可能是3*2的,計算機是不能容許在邏輯上不確定的,所以編譯器會給出錯誤

而b是正確的,因為編譯器清楚地知道它的每一行有三個元素,這樣上面的**就會產生一個int c[1][3]的陣列,如果你定義int c[3]=;那麼就會生成一個int c[2][3],不會存在邏輯二義性,所以是符合語法規範的 !找一個c方面的書一看就知!

4樓:

a對b錯

因為a中雖然沒有給出列數,但是由後面的值情況,編譯器就可以確定是3*3的陣列

b中沒有給行數只給了列數為3,而且從後面的值仍然無法知道行數,這將導致編譯器無法確定該給這個陣列分配多少個儲存單元,故錯誤!

5樓:匿名使用者

第一個錯,缺少下標。你定義的三維陣列,元素個數未定義。

第二個正確,動態陣列

6樓:

第二個錯:第一個的第一維是可以省略的!!!

C語言問題,C語言問題C語言問題

選a首先,空格也是一種字元,b d選項分別把空格賦給了c1,c1 其次,c選項不完整,排除 不僅a這樣,10a20b也是可以的。 聽不清啊 答案a 10a 20b cr 是正確的。因為scanf d c 時,會忽略數字前面的空格,遇到非數字字元就會結束讀取 非數字字元會留待下一次讀取,即被後面的 c...

C語言問題,C語言問題

符合,相當於一個字元,ascii字元可以直接轉成short整型數字。101 不符合,這是一個字串,不能作為常數。不符合,因為 會對雙引號轉義,找不到另一個雙引號。會出錯。而且就算是 也不符合,因為編譯器會把它理解成一個字串,而非單個字元。e3不符合。019不符合,0開頭代表8進位制數,不能出現9。0...

c語言問題,C語言問題?

char c 好好看書去 小 超 字元型變數 1 字元變數的定義 字元變數只能存放一個字元常量。字元變數的定義形式如下 char c1,c2 2 字元資料在記憶體中的儲存形式及其使用方法 字元型資料在記憶體中以相應的ascii 存放。字元在記憶體佔一個位元組,表示數的範圍從0 127。把字元對應的a...