笨办法学C 练习6:变量类型
練習6:變量類型
原文:Exercise 6: Types Of Variables
譯者:飛龍
你應該掌握了一個簡單的C程序的結構,所以讓我們執行下一步簡單的操作,聲明不同類型的變量。
include <stdio.h>int main(int argc, char *argv[]) {int distance = 100;float power = 2.345f;double super_power = 56789.4532;char initial = 'A';char first_name[] = "Zed";char last_name[] = "Shaw";printf("You are %d miles away.\n", distance);printf("You have %f levels of power.\n", power);printf("You have %f awesome super powers.\n", super_power);printf("I have an initial %c.\n", initial);printf("I have a first name %s.\n", first_name);printf("I have a last name %s.\n", last_name);printf("My whole name is %s %c. %s.\n",first_name, initial, last_name);return 0; }在這個程序中我們聲明了不同類型的變量,并且使用了不同的printf格式化字符串來打印它們。
你會看到什么
你的輸出應該和我的類似,你可以看到C的格式化字符串相似于Python或其它語言,很長一段時間中都是這樣。
$ make ex6 cc -Wall -g ex6.c -o ex6 $ ./ex6 You are 100 miles away. You have 2.345000 levels of power. You have 56789.453200 awesome super powers. I have an initial A. I have a first name Zed. I have a last name Shaw. My whole name is Zed A. Shaw. $你可以看到我們擁有一系列的“類型”,它們告訴編譯器變量應該表示成什么,之后格式化字符串會匹配不同的類型。下面解釋了它們如何匹配:
整數
使用int聲明,使用%d來打印。
浮點
使用float或double聲明,使用%f來打印。
字符
使用char來聲明,以周圍帶有'(單引號)的單個字符來表示,使用%c來打印。
字符串(字符數組)
使用char name[]來生命,以周圍帶有"的一些字符來表示,使用%s來打印。
你會注意到C語言中區分單引號的char和雙引號的char[]或字符串。
注
當我提及C語言類型時,我通常會使用char[]來代替整個的char SOMENAME[]。這不是有效的C語言代碼,只是一個用于討論類型的一個簡化表達方式。
如何使它崩潰
你可以通過向printf傳遞錯誤的參數來輕易使這個程序崩潰。例如,如果你找到打印我的名字的那行,把initial放到first_name前面,你就制造了一個bug。執行上述修改編譯器就會向你報錯,之后運行的時候你可能會得到一個“段錯誤”,就像這樣:
$ make ex6 cc -Wall -g ex6.c -o ex6 ex6.c: In function 'main': ex6.c:19: warning: format '%s' expects type 'char *', but argument 2 has type 'int' ex6.c:19: warning: format '%c' expects type 'int', but argument 3 has type 'char *' $ ./ex6 You are 100 miles away. You have 2.345000 levels of power. You have 56789.453125 awesome super powers. I have an initial A. I have a first name Zed. I have a last name Shaw. Segmentation fault $在Valgrind下運行修改后的程序,來觀察它會告訴你什么關于錯誤“Invalid read of size 1”的事情。
附加題
尋找其他通過修改printf使這段C代碼崩潰的方法。
搜索“printf格式化”,試著使用一些高級的占位符。
研究可以用幾種方法打印數字。嘗試以八進制或十六進制打印,或者其它你找到的方法。
試著打印空字符串,即""。
總結
以上是生活随笔為你收集整理的笨办法学C 练习6:变量类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: E-SKILL网络工程师考试认证必备
- 下一篇: Android入门——电话拨号器和四种点