[問題] switch的()中可以放入scanf嗎?

看板C_and_CPP (C/C++)作者 (恩維)時間13年前 (2012/08/05 00:45), 編輯推噓2(202)
留言4則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC int choose=0; float hourpay=0; while(choose != 5) { printf("**********************************************************\n"); printf("Enter the number :\n"); printf("1) $8.75/hr 2) $9.33/hr\n"); printf("3) $10.00/hr 4) $11.20/hr\n"); printf("5) quit\n"); printf("**********************************************************\n"); switch(scanf("%d",&choose)) { case 1 :hourpay = 8.75; break; case 2 :hourpay = 9.33; break; case 3 :hourpay = 10.00; break; case 4 :hourpay = 11.20; break; case 5 :break; default :printf("you enter a wrong number!Please again:"); } printf("hourpay is %f\n",hourpay); } 輸入1~4,變數應該會被指定對應的值,輸入5會跳出迴圈,其他數字會要求重新輸入。 可是不管輸入什麼數字,皆會進入case 1,使變數被指定為8.75 把switch(scanf("%d",&choose))這行改成 scanf("%d",&choose); switch(choose) 請問switch()是否不能放scanf ? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.219.104 ※ 編輯: remember11 來自: 114.36.219.104 (08/05 00:47)

08/05 00:49, , 1F
你要不要先查查scanf會回傳什麼值...
08/05 00:49, 1F
我懂了,我耍笨了XD,謝謝大大 ※ 編輯: remember11 來自: 114.36.219.104 (08/05 00:54)

08/05 01:52, , 2F
許多人對 scanf 的回傳值有豐富的想像....
08/05 01:52, 2F

08/05 01:52, , 3F
不過scanf的回傳值還真的挺好用的...
08/05 01:52, 3F

08/07 21:38, , 4F
真的要省一行的話.. switch((scanf("%d",&choose),choose))
08/07 21:38, 4F
文章代碼(AID): #1G7L75kB (C_and_CPP)
文章代碼(AID): #1G7L75kB (C_and_CPP)