2010-06-24 92 views
8

在下面的代碼中用逗號代表第二個參數是什麼意思?new int [25,2]是什麼意思?

int *num = new int[25,2]; 
+5

這是否甚至編譯? – 2010-06-24 06:36:25

+3

是的,這是完全合法的代碼(不幸) – 2010-06-24 06:44:07

+0

但注意'new(int [25,2])'不是合法代碼。 – 2010-06-24 09:57:03

回答

18

這是在行動comma operator:它計算它的操作數和返回的最後一個,你的情況2. 這樣,相當於有:

int *num = new int[2]; 

這可能是安全地說,​​部分原因並非如此,除非是一個詭計的問題。

編輯:謝謝Didier Trosset。

+0

逗號運算符返回第一個操作數還是最後一個? – AraK 2010-06-24 06:42:17

+4

它返回最後一個。 – 2010-06-24 06:42:57

+1

這看起來很像Didier回答..你使用相同的源代碼,還是程序員只是想像一樣:) – Default 2010-06-24 06:49:29

15

這是工作中的逗號操作:它計算它的操作數,並返回最後一個,你的情況2,這樣,相當於有:

int *num = new int[2]; 
+2

請注意,SO上的帖子文本是以需要歸屬的許可證發佈的。你可以複製粘貼,但你應該引用來源。 – avakar 2010-06-24 07:14:28

+0

Eugen Dinca在2分鐘前發佈了完全相同的答案。我不確定重新發布他的答案只是爲了糾正一個詞更有效(更優雅),而不僅僅是指出錯誤,以便他能夠解決他的答案。 – ereOn 2010-06-24 07:32:36

+0

我沒想到我可以編輯他人的答案。我實際上首先在評論中指出了錯誤,你可以看到它,並在複製粘貼他的答案以糾正錯誤後幾分鐘。對於不正確的行爲,我表示歉意。 – 2010-06-24 08:02:34

11

您正在使用逗號操作符,這是使代碼做一些你可能乍看不到的東西。

逗號運算符評估LHS操作數,然後評估並返回RHS操作數。所以在25, 2的情況下,它會評估25(什麼都不做),則計算並返回2,使該行代碼等同於:

int *num = new int[2]; 
-1

//聲明一個一維數組
INT [] ARRAY1 = new int [5];

// Declare and set array element values 
    int[] array2 = new int[] { 1, 3, 5, 7, 9 }; 

    // Alternative syntax 
    int[] array3 = { 1, 2, 3, 4, 5, 6 }; 

    // Declare a two dimensional array 
    int[,] multiDimensionalArray1 = new int[2, 3]; 

    // Declare and set array element values 
    int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } }; 

    // Declare a array 
    int[][] Array = new int[6][]; 

    // Set the values of the first array in the array structure 
    Array[0] = new int[4] { 1, 2, 3, 4 }; 
相關問題