小弟最近在上CS50剛看完C的兩個單元
寫作業的時候碰到個問題
為什麼當我想print出單一個字元的時候
不能這樣寫:
printf('a');
編譯時會提示 format string is not a string literal
而是應該這樣寫:
printf("a");
或是這樣寫:
printf("%c", 'a');
單引號不是代表一個字元嗎?
為何printf一個字元的時候不能使用單引號?
孤狗也孤狗不太到答案
不知道是不是有什麼細節我有漏掉的?
作者: kaneson (Lance) 2017-01-09 14:49:00
函式可以傳多種type參數是後來才發明的,中間有很多演進才到python那樣任意傳。還有printf本身也是新手最早要接觸到而有一定基礎才能理解的函式
因為第一個引數要const char* 你傳char當然不行孤狗printf 文件寫得蠻清楚的...查error message也很多說明...
作者:
poyenc (髮箍)
2018-12-30 10:36:00沒看過 CS50 不過看心得好像很淺.. 你對函式的認知是?
作者:
LPH66 (-6.2598534e+18f)
2018-12-30 20:16:00建議你去找本 C 語言初學的書從頭看C 和 python 有一些語言設計上的不同
稍微看過是能期待懂什麼?完整看完好好描述自己的問題,這樣別人要講要教也比較好教
作者:
poyenc (髮箍)
2018-12-31 17:37:00簡單說, 函式收的參數型別是固定的, 如果它吃的是 type*引數就會需要用 & 對 type 變數取址得來, 另外也可以讓陣列 decay 而來, string literal 就是 char 陣列 (但隱藏最後的 '\0' 字元, "hello" 陣列長度是 6, 當成字串長則是5, 你要把變數當成指標丟肯定是不行的
作者:
MaxHaru (懂得放手..才是王道)
2017-01-14 17:00:00'a'等於0x61, 是一個常數, "a"等於0x61,0x00..