看板 C_and_CPP 關於我們 聯絡資訊
小弟最近在上CS50剛看完C的兩個單元 寫作業的時候碰到個問題 為什麼當我想print出單一個字元的時候 不能這樣寫: printf('a'); 編譯時會提示 format string is not a string literal 而是應該這樣寫: printf("a"); 或是這樣寫: printf("%c", 'a'); 單引號不是代表一個字元嗎? 為何printf一個字元的時候不能使用單引號? 孤狗也孤狗不太到答案 不知道是不是有什麼細節我有漏掉的? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.177.17 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1546113306.A.ADB.html
steve1012: 因為第一個引數要const char* 你傳char當然不行12/30 04:00
steve1012: 孤狗printf 文件寫得蠻清楚的...查error message也很多12/30 04:01
steve1012: 說明...12/30 04:01
poyenc: 沒看過 CS50 不過看心得好像很淺.. 你對函式的認知是?12/30 10:36
真的很淺XDD C語言的部分data type還有一些基本的控制流跟條件判斷上完就沒了 小弟是寫python的沒上過計概想說補點基礎才看CS50 函式不是接受一個或多個input然後return一個output嗎
alan23273850: printf 只能吃字串,不能吃字元12/30 14:26
好奇為什麼是吃字串 昨天稍微額外看了一下pointer的概念 printf的輸入const char *format不是應該吃一個位置嗎 而那個位置的類型是字元 怎麼樣都跟字串連不上吧 ※ 編輯: nekosgr93 (223.137.177.17), 12/30/2018 16:31:55 ※ 編輯: nekosgr93 (223.137.177.17), 12/30/2018 16:33:41
tomsawyer: 不是傳pointer嗎(?)12/30 17:56
LPH66: 建議你去找本 C 語言初學的書從頭看12/30 20:16
LPH66: C 和 python 有一些語言設計上的不同12/30 20:17
好的 會再找相關教材補充 畢竟我也蠻想學C的 ※ 編輯: nekosgr93 (223.137.177.17), 12/30/2018 20:23:06
b0920075: 稍微看過是能期待懂什麼?完整看完好好描述自己的問題 12/31 11:00
b0920075: ,這樣別人要講要教也比較好教 12/31 11:00
poyenc: 簡單說, 函式收的參數型別是固定的, 如果它吃的是 type* 12/31 17:37
poyenc: 引數就會需要用 & 對 type 變數取址得來, 另外也可以讓 12/31 17:38
poyenc: 陣列 decay 而來, string literal 就是 char 陣列 (但隱藏 12/31 17:39
poyenc: 最後的 '\0' 字元, "hello" 陣列長度是 6, 當成字串長則是12/31 17:41
poyenc: 5, 你要把變數當成指標丟肯定是不行的12/31 17:42
不好意思因為剛看完課程寫作業就遇到問題 課程上也沒特別提到才會問這種奇怪的問題X D(畢竟CS50的課程目標也不是教C語言) 昨天翻了一整天孤狗大概是弄懂發生什麼事了 會在從基礎開始看的 感謝大家願意回答小弟的蠢問題 ※ 編輯: nekosgr93 (223.137.177.17), 12/31/2018 19:50:48
kaneson: 函式可以傳多種type參數是後來才發明的,中間有很多演進 01/09 14:49
kaneson: 才到python那樣任意傳。還有printf本身也是新手最早要接 01/09 14:49
kaneson: 觸到而有一定基礎才能理解的函式 01/09 14:49
MaxHaru: 'a'等於0x61, 是一個常數, "a"等於0x61,0x00.. 01/14 17:00