2011-04-04 94 views
2
void main() { 
    int num; 
    num = 1; 
    num++; 
    num = num + 9; 
    printf('%u',num); 
} 

這是什麼問題?它說分段錯誤。 書面C.C中的分割錯誤

+2

也使用'int main(int argc,char ** argv)'! – Benoit 2011-04-04 14:32:57

+0

雖然在這種情況下,很明顯哪一行出現錯誤,請在未來的文章中明確包含此信息 - 它使每個人的生活變得更加簡單(包括您自己的)。 – 2011-04-04 14:35:07

+0

查看編譯器的輸出是個好主意。我確信它已經提醒你已經有關於printf()。 – 2011-04-04 14:42:40

回答

7

'%u'應該是"%u"(雙引號)。 C不是SQL,並且'%u'被認爲是multicharacter literal

而且正如Erik所說,%d對你來說更好。

+0

@Ian - 如果這解決了您的問題,您應該將此答案標記爲正確。 – 2011-04-04 17:06:50

2

printf("%d") - printf採用C字符串而不是字符。 %d是整數的正確格式說明符。

2

'%u'(一個多字符字符常量)應該是「%u」(一個字符數組)。 char常量被誤解爲隨機存儲器的指針。

0

注意,你會從傳遞錯誤的類型(int而不是const char *)爲printf第一個參數,但你忘了#include <stdio.h>或原型printf自己得到了一個錯誤。而且由於printf是一個可變參數函數,因此也會導致UB。