C語言中可以有2種註釋方式:/* */ //
1. 在編譯時,編譯器會將註釋剔除,用空格代替原來的註釋
下面的註釋語句是否正確,並給出解釋:
int/*...*/i; //A
char* s = "abcdefg //hijiklmn"; //B
//Is it a \
valid comment? //C
in/**/t i; //D
A:正確,將/*...*/剔除,換成空格=> int i;
B:正確,雙引號引起來的都是字符串常量,//也不例外
C:正確的,接續符\將//Is it a 和valid comment連接起來,組成一個完整的註釋
D:錯誤,剔除/**/之後,原語句變成了 in t i; 顯然是錯誤的
2. /*...*/這種形式的註釋不能嵌套,/*總是與離它最近的*/匹配
例如:/*這是/*非法*/的*/
這個語句的想表達的本意是 將x除以指針p指向的內存的值賦值爲y
fatal error C1071: unexpected end of file found in comment
原因:編譯器把/*當成了一段註釋的開始,直到出現*/纔會結束,這個表達式只是將x賦值給了y,/*是註釋的開始,由於沒有找到註釋的結束*/,所以報錯。
應該改爲: y = x/ *p; //在/和*之間加一個空格
或者修改爲: y=x/(*p);