




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C程序設計基礎C程序設計基礎本章要點基本數據類型運算符和表達式主要內容C語言程序結構C語言的數據類型及其常量的表示法變量的定義及初始化方法運算符與表達式的概念、賦值的概念C語言的自動類型轉換和強制類型轉換主要內容2.1C程序概述2.2基本數據類型2.3運算符與表達式2.4不同類型數據之間的轉換2.5錯誤解析2.1C程序概述2.1.1一個簡單的C程序2.1.2C語言的字符集2.1.1一個簡單的C程序例2-1一個簡單的C程序。#include"stdio.h" //include稱為文件包含命令;擴展名為.h的文件也稱為頭文件intmain() //主函數main(),函數值為整形;{ //主函數開始printf("HelloC!\n"); //輸出信息"HelloC!"并換行return(0); //程序正常結束,返回值0} //主函數結束例2-2計算兩個數的和#includestdio.hintmain() //{ intsum(intx,inty); //對被調函數sum的聲明 inta,b,c; //定義變量a、b、c scanf(“%d,%d”,&a,&b);//輸入變量a和b的值 c=sum(a,b);//調用sum函數,將得到的值賦給c printf(“sum=%d\n”,c);//輸出c的值}intsum(intx,inty) //定義sum函數,函數值為整形,形式參數x、y為整形{ intz; z=x+y; //將x、y的值相加賦給變量z return(z); //將z的值返回,通過sum帶回到調用函數的位置}C源程序的結構特點一個C語言源程序可以由一個或多個函數組成。一個源程序有且只能有一個main函數,即主函數。源程序中可以有預處理命令(include命令僅為其中的一種),預處理命令通常應放在源文件或源程序的最前面。每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數頭和花括號“}”之后不能加分號。2.1.2C語言的字符集字符是組成語言的最基本的元素。C語言字符集由字母,數字,空格,標點和特殊字符組成。在字符常量,字符串常量和注釋中還可以使用漢字或其它可表示的圖形符號。C語言詞匯在C語言中使用的詞匯分為六類:標識符,關鍵字,運算符,分隔符,常量,注釋符等。2.2基本數據類型在一個具體的C語言系統里,每個數據類型都有固定的表示方式,這個表示方式實際上就確定了可能表示的數據范圍和它在內存中的存放形式。C的數據類型C語言提供了以下一些數據類型。
數據類型構造類型指針類型空類型(無值類型)void枚舉類型enum數組類型結構類型struct聯合類型
union基本類型整型int字符型char實型(浮點型)單精度實型
float雙精度實型
double2.2.1常量與變量常量和符號常量在程序運行過程中,其值不能被改變的量稱為常量常量區分為不同的類型:整型100,125,-100,0實型3.14,0.125,-3.789字符型‘a’,‘b’,‘2’字符串‘a’,‘ab’,‘1232’輸入一個半徑值,分別計算圓周長、圓面積和球的體積。
#include"stdio.h"
#definePI3.14159265 /*定義一個符號常量PI*/
intmain()
{
floatr,p,a,v; /*定義實型變量r,p,a,v*/
printf("Inputrodius:");
scanf("%f",&r);
p=2*PI*r;a=PI*r*r;v=4/3*PI*r*r*r;
printrf("\nperimeter=%f,area=%f,volume=%f",p,a,v);
return(0);
}符號常量:用一個標識符代表一個常量。符號常量的值在其作用域內不能改變,也不能再被賦值。說明:
程序中用#define命令行定義PI代表常量3.1415926,此后凡在本文件中出現的PI都代表3.1415926,可以和常量一樣進行運算說明:如再用賦值語句給PI賦值是錯的
PI=3.14;/*錯誤,不能給符號常量賦值例1符號常量的使用常量與變量變量變量代表內存中具有特定屬性的一個存儲單元,它用來存放數據,這就是變量的值,在程序運行期間,這些值是可以改變的。變量名實際上是一個以一個名字對應代表一個地址,在對程序編譯連接時由編譯系統給每一個變量名分配對應的內存地址。從變量中取值,實際上是通過變量名找到相應的內存地址,從該存儲單元中讀取數據。常量與變量
變量命名的規定:C語言規定標識符只能由字母、數字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。
例:sum,_total,month,Student_name,
lotus_1_2_3,BASIC,li_lingM.D.John,¥123,3D64,a>b
常量與變量注意:編譯系統將大寫字母和小寫字母認為是兩個不同的字符。建議變量名的長度最好不要超過8個字符。在選擇變量名和其它標識符時,應注意做到“見名知意”,即選有含意的英文單詞(或其縮寫)作標識符。要求對所有用到的變量作強制定義,也就是“先定義,后使用”。2.2.2整型數據整型常量的表示方法
整型常量即整常數,整常數可用以下三種形式表示:(1)十進制整數。
如:137,-469.5。(2)八進制整數。以0頭的數是八進制數。
如:035表示八進制數35,等于十進制數13,-011表示八進制數-11,即十進制數-9。2.2.2整型數據(3)十六進制整數。以0x開頭的數是16進制數。
如:0x2A,代表16進制數2A,等于十進制數42。-0x12等于十進制數-10。
整型變量
(1)整型數據在內存中的存放形式
數據在內存中是以二進制形式存放的。
如:inti;/*定義為整型變量*/i=15;/*給i賦以整數15*/
2.2.2整型數據注意:十進制數10的二進制形式為1010,不同的編譯系統為整型數據分配的字節數是不相同的,VC++6.0分配4個字節。數值是以補碼(complement)表示的。
2.2.2整型數據整型常量的類型
(1)一個整數,如果其值在-32768~+32767范圍內,認為它是shortint型,它可以賦值給int型和longint型變量。
(2)一個整數,如果其值超過了上述范圍,而在-2147483637~+2147483647范圍內,則認為它是為int型或長整型。可以將它賦值給一個longint型變量。2.2.2整型數據(3)一個整型常量后面加一個字母u或U,認為是unsignedint型,如12345u,在內存中按unsignedint規定的方式存放(存儲單元中最高位不作為符號位,而用來存儲數據)。如果寫成-12345u,則先將-12345轉換成其補碼53191,然后按無符號數存儲。2.2.2整型數據(4)在一個整常量后面加一個字母l或L,則認為是longint型常量。
例如:123l、432L、0L2.2.2整型數據(2)整型變量的分類共六種有符號基本整型有符號短整型有符號長整型無符號基本整型無符號短整型無符號長整型(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int)
注意:括號表示其中的內容是可選的.2.2.2整型數據整數類型的有關數據:
類型類型說明符長度數的范圍基本型int
4字節-231~231-1
短整型short2字節-215~215-1
長整型long4字節-231~231-1
無符號整型unsigned4字節0~(232-1)
無符號短整型unsignedshort4字節0~(232-1)
無符號長整型unsignedlong4字節0~(232-1)2.2.2整型數據
整型變量的定義:
C規定在程序中所有用到的變量都必須在程序中定義,即“強制類型定義”。
例如:
inta,b(指定變量a、b為整型)
unsignedshortc,d;(指定變量c、d為無符號短整型)
longe,f;(指定變量e、f為長整型)#include"stdio.h"
intmain()
{
inta,b,c,d;/*定義整型變量a、b、c、d*/
unsignedu;/*定義無符號整型變量u*/
a=12;b=24;u=10;/*a,b,u分別賦初值*/
c=a+u;d=b+u;/*把a+u的值賦給變量c,把b+u的值賦給變量d*/
printf("%d,%d\n",c,d);/*輸出變量c和d的值*/
return(0);
}說明:
可以看到不同種類的整型數據可以進行算術運算例整型變量的定義與使用
#include"stdio.h"
intmain()
{
inta,b;
a=2147483647;
b=a+1;
printf("\na=%d,a+1=%d",a,b);
a=-2147483648;
b=a-1;
printf("\na=%d,a-1=%d\n",a,b);
return0;
}
說明:數值是以補碼表示的。一個整型變量只能容納-21474836478~2147483647范圍內的數,無法表示大于2147483647或小于-2147483648的數。遇此情況就發生“溢出”。例
整型數據的溢出2.2.3實型數據實型常量的表示方法小數指數兩種表示形式0.0033e-3注意:字母e(或E)之前必須有數字,且e后面的指數必須為整數1e5、1.83e-3、-143e-4、-.1e-2e6、2.1e3.5、.e3、e
2.2。3實型數據規范化的指數形式:
在字母e(或E)之前的小數部分中,小數點左邊應有一位(且只能有一位)非零的數字.
例如:123.456可以表示為:
123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e
其中的1.23456e3稱為“規范化的指數形式”。2.2.3實型數據實型變量(浮點型)(1)實型數據在內存中的存放形式
一個浮點型數據一般在內存中占4個字節(32位)。與整型數據的存儲方式不同,浮點型數據是按照指數形式存儲的。系統把一個浮點型數據分成小數部分和指數部分,分別存放。指數部分采用規范化的指數形式。類型位數數的范圍有效數字float32
10-37~10386~7位double型64
10-307~1030815~16位longdouble12810-4931~10493218~19位2.2.3實型數據(2)浮點型變量的分類浮點型變量分為單精度(float型)、雙精度(double型)和長雙精度型(longdouble)三類形式。#include<stdio.h>
voidmain()
{floata,b;
a=123456.789e5;
b=a+20;
printf(“a=%f,b=%f\n”,a,b);
/*以十進制小數形式輸出實型變量a,b的值*/
return(0);
}
說明:一個浮點型變量只能保證的有效數字是7位有效數字,后面的數字是無意義的,并不準確地表示該數。應當避免將一個很大的數和一個很小的數直接相加或相減,否則就會“丟失”小的數例
實型數據的舍入誤差2.2.3實型數據由于實數存在舍入誤差,使用時要注意以下幾點。不要試圖用一個實數精確表示一個大整數,浮點數是不精確的。實數一般不判斷“相等”,而是判斷接近或近似。避免直接將一個很大的實數與一個很小的實數相加、相減,否則會“丟失”小的數。根據要求選擇單精度型和雙精度型。2.2.4字符型數據
字符常量(1)用單引號包含的一個字符是字符型常量(2)只能包含一個字符‘a’,’A’,‘1’‘abc’、“a”
有些以“\”開頭的特殊字符稱為轉義字符\n換行\t橫向跳格\r回車\\反斜杠\dddddd表示1到3位八進制數字\xhhhh表示1到2位十六進制數字2.2.4字符型數據
例
轉義字符的使用
#include"stdio.h"
intmain()
{
inta,b,c;
a=5;b=6;c=7;
printf("%d\n\t%d%d\n%d%d\t\b%d",a,b,c,a,b,c);
return(0);
}2.2.4字符型數據
字符變量字符型變量用來存放字符常量,注意只能放一個字符。字符變量的定義形式如下:charc1,c2;在本函數中可以用下面語句對c1,c2賦值:
c1=‘a’;c2=‘b’
;一個字符變量在內存中占一個字節。
2.2.4字符型數據字符數據在內存中的存儲形式及其使用方法一個字符常量存放到一個字符變量中,實際上并不是把該字符的字型放到內存中去,而是將該字符的相應的ASCII代碼放到存儲單元中。這樣使字符型數據和整型數據之間可以通用。注意:
一個字符數據既可以以字符形式輸出,也可以以整數形式輸出。#include"stdio.h"
intmain() /*字符"a"的各種表達方法*/
{
charc1='a';
charc2='\x61';/*\x61為轉義字符*/
charc3='\141';/*\141為轉義字符*/
charc4=97;
charc5=0x61;/*0x61為十六進制數,相當于十進制數的97*/
charc6=0141;/*0141為八進制數,相當于十進制數的97*/
printf("\ncl=%c,c2=%c,c3=%c,c4=%c,c5=%c,c6=%c\n",c1,c2,c3,c4,c5,c6);
/*以字符形式輸出*/
printf("\ncl=%c,c2=%d,c3=%d,c4=%d,c5=%d,c6=%d\n",c1,c2,c3,c4,c5,c6);
/*以十進制整數形式輸出*/
return0;
}說明:在7行中,將整數97賦給c4,它的作用相當于以下賦值語句: c1=′a′;
因為’a’的ASCII碼為97例
向字符變量賦以整數。#include"stdio.h"
intmain()
{
charc1,c2;
c1='a';
c2='b';
c1=c1-32;/*c1的ASCII碼97減32再賦給c1*/
c2=c2-32;/*c2的ASCII碼98減32再賦給c2*/
printf("\n%c%c\n",c1,c2);/*按字符形式輸出c1,c2的值*/
printf("%d%d\n",c1,c2);/*按ASCII碼形式輸出c1,c2的值*/
return0;
}說明:程序的作用是將兩個小寫字母a和b轉換成大寫字母A和B。從ASCII代碼表中可以看到每一個小寫字母比它相應的大寫字母的ASCII碼大32。C語言允許字符數據與整數直接進行算術運算。例
大小寫字母的轉換2.2.4字符型數據字符串常量字符串常量是一對雙撇號括起來的字符序列.合法的字符串常量:
“Howdoyoudo.”,“CHINA”,“a”
,“$123.45”可以輸出一個字符串,如
printf(“Howdoyoudo.”);2.2.4字符型數據
‘a’是字符常量,”a”是字符串常量,二者不同。
如:假設C被指定為字符變量
:charcc=’a’;
c=”a”;c=”CHINA”;
結論:不能把一個字符串常量賦給一個字符變量。C規定:在每一個字符串常量的結尾加一個“字符串結束標志”,以便系統據此判斷字符串是否結束。C規定以字符’\0’作為字符串結束標志。
如:如果有一個字符串常量”CHINA”,實際上在內存中是:2.2.4字符型數據CHINA\0
它占內存單元不是5個字符,而是6個字符,最后一個字符為’\0’。但在輸出時不輸出’\0’。2.2.5變量賦初值
字符串常量(1)C語言允許在定義變量的同時使變量初始化如:inta=3;//指定a為整型變量,初值為3
floatf=3.56;//指定f為浮點型變量,初值為3.56charc=‘a’;//指定c為字符變量,初值為‘a’2.2.5變量賦初值
(2)可以使被定義的變量的一部分賦初值。
如:
inta,b,c=5;表示指定a、b、c為整型變量,但只對c初始化,c的初值為5(3)如果對幾個變量賦以同一個初值,應寫成:inta=3,b=3,c=3;表示a、b、c的初值都是3。不能寫成∶
inta=b=c=3;
注意:初始化不是在編譯階段完成的而是在程序運行時執行本函數時賦初值的,相當于有一個賦值語句。各類數值型數據間的混合運算
混合運算:整型(包括int,short,long)、浮點型(包括float,double)可以混合運算。在進行運算時,不同類型的數據要先轉換成同一類型,然后進行運算.說明:這種類型轉換是由系統自動進行的。2.3運算符和表達式2.3.1C運算符簡介
C的運算符有以下幾類:(1)算術運算符(+-*/%)(2)關系運算符(><
==>=<=!=)(3)邏輯運算符(!&&||)(4)位運算符(<<>>~|∧&)(5)賦值運算符(=及其擴展賦值運算符)(6)條件運算符(?:)(7)逗號運算符(,)2.3運算符和表達式(8)指針運算符(*和&)(9)求字節數運算符(sizeof)(10)強制類型轉換運算符((類型))(11)分量運算符(.->)(12)下標運算符([])(13)其他(如函數調用運算符())2.3.2算術運算符和算術表達式(1)基本的算術運算符:+(加法運算符,或正值運算符。如:3+5、+3)-(減法運算符,或負值運算符。如:5-2、-3)*(乘法運算符。如:3*5)/(除法運算符。如:5/3)%(模運算符,或稱求余運算符,%兩側均應為整型數據,如:7%4的值為3)。2.3.2算術運算符和算術表達式(2)算術表達式和運算符的優先級與結合性基本的算術運算符:
用算術運算符和括號將運算對象(也稱操作數)連接起來的、符合C語法規則的式子,稱為C算術表達式。運算對象包括常量、變量、函數等。
例如:
a*b/c-1.5+′a′
是一個合法的表達式C語言規定了運算符的優先級和結合性。在表達式求值時,先按運算符的優先級別高低次序執行,例如先乘除后加減。
C規定了各種運算符的結合方向(結合性)
算術運算符的結合方向為“自左至右”,即先左后右。2.3.2算術運算符和算術表達式假設今天是星期三,20天之后是星期幾?
#include"stdio.h"
intmain()
{
intday,n;
scanf("%d",&n); /*輸入過多少天后*/
day=(n%7+3)%7; /*計算過n天后是星期幾*/
printf("%d\n",day); /*輸出計算結果*/
return0;
}
說明:設用0、1、2、3、4、5、6分別表示星期日、星期一、星期二、星期三、星期四、星期五、星期六。因為一個星期有7天,即7天為一周期,所以n/7等于n天里過了多少個整周,n%7就是n天里除去整周后的零頭(不滿一周的天數),(n%7+3)%7就是過n天之后的星期幾。例算術運算符和算術表達式的使用2.3.3關系運算符與關系表達式6種關系運算符:<、>、<=、>=、==、!=用關系運算符將兩個操作數連接起來的合法的C語言式子,稱為關系表達式。例如,8>5、a==b、c!=d、x>=y。關系表達式的結果為邏輯值,邏輯值只有兩個值,即邏輯真與邏輯假。在C語言中沒有邏輯型數據類型,以0表示邏輯假,以l表示邏輯真。在輸出時,邏輯真顯示1,邏輯假顯示0。例
輸出兩個整數的最大值。#include"stdio.h"intmain(){ inta,b,max; scanf("%d,%d",&a,&b); //輸入a,b的值 if(a>b)max=a; //如果a大于b,把a賦給max elsemax=b; //否則把b賦給max printf("max=%d\n",max); //輸出max的值 return(0);}2.3.4邏輯運算符與邏輯表達式3種邏輯運算符:&&(邏輯與)如果兩個操作數均為邏輯真,則結果為邏輯真,否則為邏輯假,即“兩真為真,否則為假”或“見假為假,否則為真”。||(邏輯或)如果兩個操作數均為邏輯假,則結果為邏輯假,否則為邏輯真,即“兩假為假,否則為真”或“見真為真,否則為假”。!(邏輯非)將邏輯假轉變為邏輯真,邏輯真轉變為邏輯假,即“顛倒是否”,它是邏輯運算符中惟一的單目運算符。2.3.5賦值運算符和賦值表達式
(1)賦值運算符
賦值符號“=”就是賦值運算符,它的作用是將一個數據賦給一個變量。如“a=3”的作用是執行一次賦值操作(或稱賦值運算)。把常量3賦給變量a。也可以將一個表達式的值賦給一個變量.
2.3.5賦值運算符和賦值表達式(2)類型轉換
如果賦值運算符兩側的類型不一致,但都是數值型或字符型時,在賦值時要進行類型轉換。①將浮點型數據(包括單、雙精度)賦給整型變量時,舍棄浮點數的小數部分。如:i為整型變量,執行“i=3.26”的結果是使i的值為3,以整數形式存儲在整型變量中.2.3.5賦值運算符和賦值表達式
②將整型數據賦給單、雙精度變量時,數值不變,但以浮點數形式存儲到變量中
如:
將23賦給float變量f,即執行f=23,先將23轉換成23.00000,再存儲在f中。將23賦給double型變量d,即執行d=23,系統將23補足有效位數字為23.00000000000000,然后以雙精度浮點數形式存儲到變量d中。
2.3.5賦值運算符和賦值表達式③將一個double型數據賦給float變量時,截取其前面7位有效數字,存放到float變量的存儲單元(4個字節)中。但應注意數值范圍不能溢出。
如:floatf;doubled=123.456789e100;f=d;
就出現溢出的錯誤。
如果將一個float型數據賦給double變量時,數值不變,有效位數擴展到16位,在內存中以8個字節存儲2.3.5賦值運算符和賦值表達式④字符型數據賦給整型變量時,由于字符只占1個字節,而整型變量為4個字節,因此將字符數據(8個二進位)放到整型變量存儲單元的低8位中。2.3.5賦值運算符和賦值表達式⑤將一個int、short、long型數據賦給一個char型變量時,只將其低8位原封不動地送到char型變量(即截斷)。2.3.5賦值運算符和賦值表達式⑥將unsignedint型數據賦給longint型變量時,不存在符號擴展問題,只需將高位補0即可。將一個unsigned類型數據賦給一個占字節數相同的非unsigned型整型變量(例如:unsignedint->int,unsignedlong->long,unsignedshort->short),將unsigned型變量的內容原樣送到非unsigned型變量中,但如果數據范圍超過相應整型的范圍,則會出現數據錯誤。#include"stdio.h"
intmain()
{
inti=5; /*說明整型變量i并初始化為5*/
floata=3.5,a1; /*說明實型變量a和al并初始化a*/
doubleb=123456789.123456789;/*說明雙精度型變量b并初始化*/
charc='A'; /*說明字符變量C并初始化為A*/
printf("i=%d,a=%f,c=%c\n",i,a,b,c);/*輸出i,a,b,c的初始值*/
a1=i;i=a;a=b;c=i;
/*整型變量i的值賦值給實型變量al,實型變量a的值賦給整型變量i,
雙精度型變量b的值賦值給實型變量a,整型變量i的值賦值給字符變量c*/
printf("i=%d,a=%f,a1=%f,c=%c\n",i,a,a1,c);
/*輸出i,a,a1,c賦值以后的值*/
return(0);
}例賦值運算中類型轉換的規則
2.3.5賦值運算符和賦值表達式(3)復合的賦值運算符
在賦值符“=”之前加上其他運算符,可以構成復合的運算符。例如:a+=3等價于a=a+3x*=y+8等價于x=x*(y+8)x%=3等價于x=x%3以“a+=3”為例來說明,它相當于使a進行一次自加(3)的操作。即先使a加3,再賦給a。賦值運算符和賦值表達式
為便于記憶,可以這樣理解:①a+=b(其中a為變量,b為表達式)②a+=b(將有下劃線的“a+”移到“=”右側)
|___↑③a=a+b(在“=”左側補上變量名a)賦值運算符和賦值表達式
注意:如果b是包含若干項的表達式,則相當于它有括號。如:
①x%=y+3
②x%=(y+3)|__↑
③x=x%(y+3)(不要錯寫成x=x%y+3)
凡是二元(二目)運算符,都可以與賦值符一起組合成復合賦值符。C語言規定可以使用10種復合賦值運算符:+=,-=,*=,/=,%=,<<=,>>=,&=,∧=,|=
例
復合賦值運算符的使用#include"stdio.h"intmain(){inta=3,b=2,c=4,d=8,x;a+=b*c; /*a=11*/b-=c/b; /*b=0*/printf("%d,%d,%d\n",a,b,c*=2*(a-b));d%=a;printf("x=%d\n",x=a+b+c+d);return0;}2.3.5賦值運算符和賦值表達式賦值表達式
由賦值運算符將一個變量和一個表達式連接起來的式子稱為“賦值表達式”。一般形式為:
<變量><賦值運算符><表達式>
例如:“a=5”是一個賦值表達式
2.3.5賦值運算符和賦值表達式對賦值表達式求解的過程是:
①求賦值運算符右側的“表達式”的值;②賦給賦值運算符左側的變量。例如:賦值表達式“a=3*5”的值為15,執行表達式后,變量a的值也是15。
注意:一個表達式應該有一個值
左值(lvalue)
:賦值運算符左側的標識符變量可以作為左值;而表達式就不能作為左值(如a+b);常變量也不能作為左值,
右值(lvalue)
:出現在賦值運算符右側的表達式
左值也可以出現在賦值運算符右側,因而左值都可以作為右值。2.3.5賦值運算符和賦值表達式2.3.6逗號運算符和逗號表達式逗號運算符:將兩個表達式連接起來,又稱為“順序求值運算符”
如:3+5,6+8
一般形式:
表達式1,表達式2求解過程:先求解表達式1,再求解表達式2。整個逗號表達式的值是表達式2的值。
逗號表達式的值為14例:逗號表達式a=3*5,a*4
分析:賦值運算符的優先級別高于逗號運算符,因此應先求解a=3*5。
一個逗號表達式又可以與另一個表達式組成一個新的逗號表達式如:(a=3*5,a*4),a+5
先計算出a的值等于15,再進行a*4的運算得60(但a值未變,仍為15),再進行a+5得20,即整個表達式的值為20。2.3.6逗號運算符和逗號表達式a的值為15,然后求解a*4,得60。整個逗號表達式的值為60。逗號表達式的一般形式可以擴展為
表達式1,表達式2,表達式3,……,表達式n它的值為表達式n的值。逗號運算符是所有運算符中級別最低的例:①x=(a=3,6*3)②x=a=3,6*3賦值表達式,將一個逗號表達式的值賦給x,x的值等于18逗號表達式,包括一個賦值表達式和一個算術表達式,x的值為3,整個逗號表達式的值為18。2.3.6逗號運算符和逗號表達式注意:并不是任何地方出現的逗號都是作為逗號運算符。例如函數參數也是用逗號來間隔的。如:printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c)
“(a,b,c)”是一個逗號表達式,它的值等于c的值。2.3.6逗號運算符和逗號表達式“a,b,c”并不是一個逗號表達式,它是printf函數的3個參數例
逗號表達式的使用#include"stdio.h"intmain(){intx,a;x=(a=3,6*3); /*把逗號表達式的值賦給變量x,a=3,x=18*/printf("%d,%d\n",a,x);x=a=3,6*a; /*a=3,x=3,整個逗號表達式的值為18*/printf("%d,%d\n",a,x);return0;}算術運算符和算術表達式(3)強制類型轉換運算符
可以利用強制類型轉換運算符將一個表達式轉換成所需類型。
一般形式:(類型名)(表達式)例如:(double)a將a轉換成double類型(int)(x+y)將x+y的值轉換成整型(float)(5%3)將5%3的值轉換成float型2.3.7自增自減運算符自增、自減運算符
作用是使變量的值增1或減1如:++i,--i(在使用i之前,先使i的值加(減)1)i++,i--(在使用i之后,使i的值加(減)1)
i++與++i的區別:
++i是先執行i=i+1后,再使用i的值;i++是先使用i的值后,再執行i=i+1。例如:①j=++i;
i的值先變成4,再賦給j,j的值均為4②j=i++;先將i的值3賦給j,j的值為3,然后i變為42.3.7自增自減運算符注意:
(1)自增運算符(++),自減運算符(--),只能用于變量,而不能用于常量或表達式,
(2)++和--的結合方向是“自右至左”。
自增(減)運算符常用于循環語句中使循環變量自動加1。也用于指針變量,使指針指向
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CECS 10375-2024建筑幕墻用精密鋼型材
- T/CECS 10211-2022給水用電熔鋼骨架增強高密度聚乙烯復合管件
- T/CECS 10018-2019公用終端直飲水設備
- T/CCT 010-2021民用蘭炭產品規格及質量
- T/CCSAS 030-2023傳熱單元操作機械化、自動化設計方案指南
- T/CCMA 0047-2016盾構機操作工
- T/CAQI 124-2020家用和類似用途飲用水處理裝置安全使用年限
- T/CAPEB 00001.7-2022制藥裝備容器和管道第7部分:檢驗
- T/CAPEB 00001.5-2022制藥裝備容器和管道第5部分:管道連接
- java原創面試題及答案
- 作業治療學題庫第七章
- 醫學信息檢索與利用智慧樹知到答案章節測試2023年杭州醫學院
- 并網前設備電氣試驗、繼電保護整定、通訊聯調
- 用表格為網頁布局教學設計
- GB/T 3733.1-1983卡套式端直通管接頭
- 病原微生物實驗室生物安全管理手冊
- 上消化道出血病人的觀察與護理-課件
- 光纜測試報告
- 初中物理教育科學八年級下冊第十一章 機械與功《功》教學設計
- 神經病學人衛版習題集題庫
- (統編版小學語文教師)語文新課標新舊對比變化
評論
0/150
提交評論