2017-06-22 85 views
0
#include <stdio.h> 
int main(void) { 
    int i,t[5\]; 
    for(i = 0; i < 5; i++) 
     t[i\] = 2 * i; 
    i = 0; 
    for(i = 0; i < 5; i++) 
     i += t[i\]; 
    printf("%d",i); 
    return 0; 
} 

什麼\在陣列裝置意味着什麼?提前致謝。C編程-在下面的程序什麼呢 '' 在T [5 ]

我在CLA (C Programming Language Certified Associate) sample paper找到了這個程序。

+3

對我來說看起來不像C。 –

+8

你試過編譯它嗎?你有錯誤嗎?你應該這樣做,因爲反斜槓的唯一含義是語法錯誤。你從哪裏得到代碼?這可能是一個複製粘貼錯誤?或者一些代碼到html代碼失敗? –

+3

正如您所看到的,代碼片段中的降價代碼不起作用,所以請在代碼中避免使用它們。改爲在代碼中使用註釋。請編輯您的問題以刪除非工作**粗體**標記。 –

回答

4

程序不正確,\]是語法錯誤。

一種可能的解釋是筆者不得不逃離一些C運算符(如[)來排版代碼片段,他也逃脫]其字處理軟件似乎獨自離開......

忽略這些\或用]替換所有出現的\]

請注意,這是一個棘手的問題,編寫這段代碼的程序員應該被解僱。

還要注意the document in question有其他錯誤。例如11題寫着:如果你嘗試編譯並運行此程序

會發生什麼?

#include <stdio.h> 
    int main(void) { 
     int t[2\][3\] = { { 3, 2, 1 }, { 1, 2, 3} }; 
     printf("%d", sizeof(t)/sizeof(t[1\][1\])); 
     return 0; 
    } 

A.方案產出6
B.方案產出3
C.方案產出2
D.方案產出4

忽略\],程序有潛在的未定義行爲爲%d預計int但傳遞到printf()的值有size_t類型。

問題13,14,15,17有一個類似的問題。

1

在這種情況下不允許使用反斜槓,它的語法無效。 你可以在這裏驗證它在ideone online。 會得到以下錯誤:如果你要編譯的代碼,而你只需要刪除無效\錯誤

prog.c: In function ‘main’: 
prog.c:4:13: error: stray ‘\’ in program 
    int i,t[5\]; 
      ^
prog.c:7:10: error: stray ‘\’ in program 
     t[i\] = 2 * i; i = 0; 
     ^
prog.c:11:15: error: stray ‘\’ in program 
     i += t[i\]; 
      ^

實際上,您使用反斜槓作爲轉義字符來使用它,例如在轉義序列中使用它,例如'\n'(描述爲here at wikipedia)。

+1

在每個\我的版本給出答案C:13後放了一個換行符。 –

3

這意味着:

克里斯托弗Boguslawski,總統在C++研究所,

未能有人正確地檢查過他們的樣題的錯誤。

代碼將不會運行它的寫入方式。

人們可以推測,他們希望\是在該行的末尾(因爲它是一個有效續行字符)和忘了在換行回車。雖然這將解決這個問題,它不沒有道理,爲什麼他們會在每個末端支架之前這樣做。

更合理的是,他們可能會在整個文檔中「發現並替換」並偶然傳播錯誤。

在猜測:可能是一些排版寫的所有陣列爲:(或者說讓他們回去和適當的支架更換一些其他配置)t<|5|>

然後在一個合適的懶惰的,他們做了一個查找<|替換[沒關係。

然後找到|>替換\]這是不好的。

哪種有意義,因爲\]在鍵盤上彼此相鄰。 (他們可能胖手指吧。)

整個文檔具有之前\]是確鑿的事實。

因此,它很可能是一個草率的查找/替換,不贊成他們的整個文檔。

所以這意味着\t[5\]是一個錯誤。

相關問題