精品理论电影在线_日韩视频一区二区_一本色道精品久久一区二区三区_香蕉综合视频

2011年計算機等級考試二級C語言入門教程:表達式和語句

發布時間:2011-09-16 共2頁

導讀:本文主要介紹表達式和語句。

  一、表達式
  前面已經提到過表達式,相信大家對表達式也有了一個初步的認識,它是由常量、變量、運算符組合(到以后講函數時,函數也可以是組成表達式的元素),計算以后返回一個結果值。表達式的結束標志是分號(;),C語言中所有的語句和聲明都是用分號結束,在分號出現之前,語句是不完整的。
  例如:
  1+2;
  Counter/3+5;
  Height*Width;
  表達式本身什么事情都不做,只是返回結果值。在程序不對返回的結果值做任何操作的情況下,返回的結果值不起任何作用,表達式的作用有兩點,一個是放在賦值語句的右邊,另一個是作為函數的參數(以后再介紹)。
  表達式返回的結果值是有類型的。表達式隱含的數據類型取決于組成表達式的變量和常量的類型。因此,表達式的返回值有可能是某種大小的整型,或者是某精度的浮點型,或者是某種指針類型。
  這里面就有類型轉化的問題了,在前面說整型運算的時候也提到過。類型轉化的原則是從低級向高級自動轉化(除非人為的加以控制)。計算的轉換順序基本是這樣的:
  字符型-->整型-->長整型-->浮點型-->單精度型-->雙精度型
  就是當字符型和整型在一起運算時,結果為整型,如果整型和浮點型在一起運算,所得的結果就是浮點型,如果有雙精度型參與運算,那么答案就是雙精度型了。
  強制轉換是這樣的,在類型說明符的兩邊加上括號,就把后面的變量轉換成所要的類型了。如:
  (int) a;
  (float) b;
  第一個式子是把a轉換成整型,如果原先有小數部分,則舍去。
  第二個式子是把b轉換成浮點型,如果原先是整數,則在后面補0。
  每一個表達式的返回值都具有邏輯特性。如果返回值為非0,則該表達式返回值為真,否則為假。這種邏輯特性可以用在程序流程控制語句中。
  有時表達式也不參加運算,如:
  if(a||b) …………
  5>3?a++:b++;
  當a為真時,b就不參加運算了,因為不管b如何,條件總是真。
  二、語句
  (一)、賦值語句
  其實這個問題,在講賦值運算符的時候已經講了一些了。
  Amount=1+2;
  Total=Counter/3+5;
  Area=Height*Width;
  也許你會發現,這些賦值語句很象代數方程,在某些情況下,我們的確可以這樣理解,但有時它們是不一樣的。看下面:
  Num=Num+1;
  這顯然不是一個等式。
  (二)、用逗號分隔開的聲明語句
  C語言可大多數語言一樣,允許用逗號分隔聲明語句中的標識符列表,說明這些運算符是同一變量類型。例如:
  float Area,Height,Width;
  但有些程序員喜歡把標識符寫在不同的行上。如:
  float Area,
  Height,
  Width;
  這樣寫至少有一個好處,就是可以在每個標識符后邊加上注釋。
  在聲明變量的時候,也可以直接給變量賦值,這叫做變量的初始化。
  如:int a;
  a=3;
  等價于:
  int a=3;
  我們也讓某些變量初始化,某些不初始化,如:
  int a=3,b,c=5;
  在進行初始化時,初始化表達式可以是任意的(對全局變量和靜態變量有區別),由于逗號運算符是從左到右運算的,那么看看這樣行不行?
  int a=3,b=a,c=5;
  (三)、標準輸入輸出語句
  Turbo C 2.0標準庫提供了兩個控制臺格式化輸入、輸出函數scanf();和printf();這兩個函數可以在標準輸入輸出設備上以各種不同的格式讀寫數據。scanf() 函數用來從標準輸入設備(鍵盤)上讀數據,printf()函數用來向標準輸出設備(屏幕)寫數據。下面詳細介紹這兩個函數的用法。
  1.標準輸入語句
  scanf()函數是格式化輸入函數, 它從標準輸入設備(鍵盤) 讀取輸入的信息。其調用格式為:
  scanf(<格式化字符串>, <地址表>);
  格式化字符串包括以下三類不同的字符;
  (1).空白字符:空白字符會使scanf()函數在讀操作中略去輸入中的一個或多個空白字符。
  (2).非空白字符:一個非空白字符會使scanf()函數在讀入時剔除掉與這個非空白字符相同的字符。
  (3).格式化說明符:以%開始,后跟一個或幾個規定字符,用來確定輸出內容格式。
  Turbo C 2.0提供的輸入格式化規定符如下:
  ━━━━━━━━━━━━━━━━━━━━━━━━━━
  符號 作用
  ──────────────────────────
  %d 十進制有符號整數
  %u 十進制無符號整數
  %f 浮點數
  %s 字符串
  %c 單個字符
  %p 指針的值
  %x,%X 無符號以十六進制表示的整數
  %o 無符號以八進制表示的整數
  ━━━━━━━━━━━━━━━━━━━━━━━━━━
  地址表是需要讀入的所有變量的地址,而不是變量本身,取地址符為'&'。各個變量的地址之間同,分開。
  例如:
  scanf(%d,%d,&i,&j);
  上例中的scanf()函數先讀一個整型數,然后把接著輸入的逗號剔除掉,最后讀入另一個整型數。如果,這一特定字符沒有找到,scanf()函數就終止。若參數之間的分隔符為空格,則參數之間必須輸入一個或多個空格。

百分百考試網 考試寶典

立即免費試用