2015-12-14 17 views
-1

這裏只是一個示例代碼:如何增加字符常量?

#include <stdio.h> 
char a; 
int main(void) 
{ 
a = 'ayy lmao'; 
printf("%c", a); 
getchar(); 
return 0; 
} 

當我執行,我得到一個錯誤消息說,有「在不斷的太多字符」。我如何解決這個問題並允許將多個字符分配給「a」?

+13

「w」是由'w'和空字符'\ 0'組成的字符數組。試試'a ='w';' –

+5

啓用編譯器警告並留意它們 – Olaf

+0

@AirirhRamanathan哦,就是這樣。謝謝。 –

回答

1

"w"是一個字符數組,它被轉換爲指向數組第一個元素的指針,作爲賦值運算符的thr操作數。

它被分配到char,所以它在典型的環境中將變成毫無意義的價值。

嘗試

#include <stdio.h> 
int main(void) { 
    int a; 
    a = 'w'; 
    printf("%c", a); 
    return 0; 
} 

#include <stdio.h> 
int main(void) { 
    char* a; 
    a = "w"; 
    printf("%s", a); 
    return 0; 
} 

注:

  • 您應該使用的標準,而不是int main(void)main()
  • 除非必要,否則不應使用全局變量。
  • 字符常量的類型爲C中的類型爲int,而%cprintf()接受int的值。 (char自動轉換爲int用於可變長度自變量)
  • getchar();已刪除。終端軟件對於執行程序並查看結果很有用。
1

C您應該在單引號中定義一個字符。

a = 'w'; 

一切屬於"被視爲一個字符數組。它包含字符後跟終止字符\0

+0

但printf不打印任何字符串的內容 - 它打印字符串地址的一個字節。如果他說'printf(「%c」,* a)',那麼他會看到他想要的。 –

+0

是的,但是用他最初的代碼,雖然他得到了一些警告,但他應該把一些垃圾作爲輸出打印出來。 – Fawzan

+0

@JerryJeremiah不,他不會。 'a'的類型是'char',所以他會得到一個編譯錯誤來解引用不是指針的東西。 – MikeCAT