购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 先算个1+2吧

瑞说:“我们还是快点让C语言有运算能力吧。”

把C语言运算设计成和数学运算看起来很像的样子,应该没有比这更聪明的做法了吧?其实,在C语言之前的早期编程时代不是这样的。C语言支持加(+)、减(-)、乘(*)、除(/)。当然,数学中的乘号是×,C语言中是*,数学中的除号是÷,C语言中是/。二者除了符号样式不同,运算符号的规则是一致的。

瑞问:“为什么C语言的乘除号和数学的不同?”

那不是因为键盘上没有这两个符号吗?

探索: 我们先来试试1+2等于几。你可以先自己利用学过的知识试着完成一下这个程序。

瑞说:“这个程序编译出错了。”

这是因为printf并不支持直接输出数字。我们有两个方式解决这个问题:第一种方式,我们还用printf,学习它更加强大的技巧。还有一种是C++的语法,在下一节讨论。

瑞说:“原来printf还没学完。”

我们目前学过的printf输出的基础是字符串,显示的一句话对于计算机来说就是一串字符。字符串是由一对双引号标识的,关于这个我们已经很有经验了。printf输出数字,需要将数字嵌入字符串,输出1+2的写法是“printf(“%d”,1+2);”。

瑞说:“这么复杂呀!”

将程序修改成正确的写法,试一下。

瑞说:“可以了,计算机算出了3。”

其实""也是个字符串。计算机只要见到有一个"",不管里边有没有东西,也不管东西是什么,就认定里面的都是字符串。

瑞问:“%d是干什么的?”

%d代表在这个位置上,我需要显示一个数字。这个数字就是逗号后边提供的那个。这里我们提供的是1+2,但它显示的不是1+2,而是3,因为%d决定了它只要一个数字,所以程序会自动把1+2算出来,结果放到%d的位置上。

瑞问:“既然可以是字符串,那么我是否可以写一些话在里头呢?”

探索: 运行“printf("计算的结果是%d",1+2);”这句话的显示结果是什么?

你试一下应该能发现,没问题,或者我们写得更合理一点,像这样:

瑞说:“这样输出的结果看起来就舒服多了。”

我没有让你一上来就这么写,是因为虽然输出的结果舒服了,但写这个程序的时候是会有迷惑的——1+2=是一个字符串,后面的1+2是计算的数字。发明printf程序的人想法还是很特别的,他这么设计就是为了让printf无比强大,但是一定还有更好的设计。

注意: 程序员最难的是,心中装着程序运行后的结果,脑袋里想的是如何一步步实现这个结果。但现实往往是,编写的程序和结果总会不一样,会有很多想不到的细节问题,需要不断修改程序。运行结果是具象思维,实现过程是抽象思维,不断切换两种思维是一个很大的挑战。随着我们写的程序越来越复杂,这个挑战会变得越来越难,当然,在这个过程中,我们的思维能力会越来越强大。 h9G954L6Cfogrz4mE2tgJHCnkIiCCIVrVtkk3MpH4jcS/E+LnehTw1OpVIh6bBn/

点击中间区域
呼出菜单
上一章
目录
下一章
×