充分理解表达式——《狂人C》习题解答2(第二章习题5)
???
/*
編程求1+3+5+7+9+11。
*/
#include <stdio.h>
#include <stdlib.h>int main( void )
{printf ("1+3+5+7+9+11=") ; printf ("%d\n" , 1 + 3 + 5 + 7 + 9 + 11 ) ;system("PAUSE"); return 0;}
??? 這個題目的主要目的有兩個:
??? 1.掌握寫整數常量的方法。這個不難。
??? 2.透徹理解C語言中表達式的意義。這個有必要多說幾句。
??? 在代碼中,“1 + 3 + 5 + 7 + 9 + 11”這個表達式的意義有兩個:第一,是“命令”計算機計算“1 + 3 + 5 + 7 + 9 + 11”;第二,這個表達式本身同時表示計算的結果。
??? C語言是一種命令式語言(Imperative language,亦稱強制式語言),這種語言通過指明一系列可執行的運算并通過運算的次序來描述計算過程,學習C語言就是學習使用C語言“命令”計算機。如果沒有意識到這點,就不可能理解用C語言編程的本質。所以在學習C語言時要特別注意體會可以用C語言向計算機發出哪些“命令”。
??? “1 + 3 + 5 + 7 + 9 + 11”這個表達式要求計算機進行一系列加法運算。C語言的運算符都是要求計算機執行的動作,對計算機發出的最基本的命令都是通過運算符表示的。代數中的運算式是要人自己算,代碼中的表達式是要求計算機計算,這是本質上的不同。
??? 表達式都有一個普遍的作用——求值,即使一個表達式不求值,也稱它求的是一個void類型的值(void類型就是沒有值的類型)。而且表達式本身也代表它所求得的值。
??? 所以,表達式“1 + 3 + 5 + 7 + 9 + 11”的另一層含義是,它就是計算機所求得的那個值。不少初學者領悟不到這點,他們往往習慣性地把這個值存儲到一個變量中才放心,從而把代碼寫成
/*
編程求1+3+5+7+9+11。
*/
#include <stdio.h>
#include <stdlib.h>int main( void )
{int he ; //沒必要定義這個變量 he = 1 + 3 + 5 + 7 + 9 + 11 ; //這里多了一次賦值運算 printf ("1+3+5+7+9+11=") ; printf ("%d\n" , he ) ;system("PAUSE"); return 0;}
????
??? 仔細思考一下不難發現,he這個變量根本沒有必要。既然沒有必要,為什么要設置這樣一個變量呢?而且與前面的代碼相比,這段代碼多了一個賦值運算。
??? 代碼應該簡潔,如果沒有理由,不應該寫任何不必要的東西。
??? 總結:
- ??? 運算符表示命令計算機進行的計算;
- ??? 表達式本身有值,這個值可以直接使用。并不一定需要把這個值賦值給變量再使用,這樣的代碼更直接、更簡潔。
轉載于:https://www.cnblogs.com/KBTiller/archive/2011/05/06/2038452.html
總結
以上是生活随笔為你收集整理的充分理解表达式——《狂人C》习题解答2(第二章习题5)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求沙漠骆驼歌词
- 下一篇: [C#] enum 枚举