[問題] printf 和 引號問題

看板C_and_CPP作者 (cat@mantis)時間5年前 (2018/12/30 03:55), 5年前編輯推噓5(5014)
留言19則, 8人參與, 6年前最新討論串1/1
小弟最近在上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

12/30 04:00, 5年前 , 1F
因為第一個引數要const char* 你傳char當然不行
12/30 04:00, 1F

12/30 04:01, 5年前 , 2F
孤狗printf 文件寫得蠻清楚的...查error message也很多
12/30 04:01, 2F

12/30 04:01, 5年前 , 3F
說明...
12/30 04:01, 3F

12/30 10:36, 5年前 , 4F
沒看過 CS50 不過看心得好像很淺.. 你對函式的認知是?
12/30 10:36, 4F
真的很淺XDD C語言的部分data type還有一些基本的控制流跟條件判斷上完就沒了 小弟是寫python的沒上過計概想說補點基礎才看CS50 函式不是接受一個或多個input然後return一個output嗎

12/30 14:26, 5年前 , 5F
printf 只能吃字串,不能吃字元
12/30 14:26, 5F
好奇為什麼是吃字串 昨天稍微額外看了一下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

12/30 17:56, 5年前 , 6F
不是傳pointer嗎(?)
12/30 17:56, 6F

12/30 20:16, 5年前 , 7F
建議你去找本 C 語言初學的書從頭看
12/30 20:16, 7F

12/30 20:17, 5年前 , 8F
C 和 python 有一些語言設計上的不同
12/30 20:17, 8F
好的 會再找相關教材補充 畢竟我也蠻想學C的 ※ 編輯: nekosgr93 (223.137.177.17), 12/30/2018 20:23:06

12/31 11:00, 5年前 , 9F
稍微看過是能期待懂什麼?完整看完好好描述自己的問題
12/31 11:00, 9F

12/31 11:00, 5年前 , 10F
,這樣別人要講要教也比較好教
12/31 11:00, 10F

12/31 17:37, 5年前 , 11F
簡單說, 函式收的參數型別是固定的, 如果它吃的是 type*
12/31 17:37, 11F

12/31 17:38, 5年前 , 12F
引數就會需要用 & 對 type 變數取址得來, 另外也可以讓
12/31 17:38, 12F

12/31 17:39, 5年前 , 13F
陣列 decay 而來, string literal 就是 char 陣列 (但隱藏
12/31 17:39, 13F

12/31 17:41, 5年前 , 14F
最後的 '\0' 字元, "hello" 陣列長度是 6, 當成字串長則是
12/31 17:41, 14F

12/31 17:42, 5年前 , 15F
5, 你要把變數當成指標丟肯定是不行的
12/31 17:42, 15F
不好意思因為剛看完課程寫作業就遇到問題 課程上也沒特別提到才會問這種奇怪的問題X D(畢竟CS50的課程目標也不是教C語言) 昨天翻了一整天孤狗大概是弄懂發生什麼事了 會在從基礎開始看的 感謝大家願意回答小弟的蠢問題 ※ 編輯: nekosgr93 (223.137.177.17), 12/31/2018 19:50:48

01/09 14:49, 6年前 , 16F
函式可以傳多種type參數是後來才發明的,中間有很多演進
01/09 14:49, 16F

01/09 14:49, 6年前 , 17F
才到python那樣任意傳。還有printf本身也是新手最早要接
01/09 14:49, 17F

01/09 14:49, 6年前 , 18F
觸到而有一定基礎才能理解的函式
01/09 14:49, 18F

01/14 17:00, 6年前 , 19F
'a'等於0x61, 是一個常數, "a"等於0x61,0x00..
01/14 17:00, 19F
文章代碼(AID): #1S9z4QhR (C_and_CPP)