版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章基本數(shù)據(jù)類(lèi)型和運(yùn)算符學(xué)習(xí)時(shí)要關(guān)注以下幾個(gè)問(wèn)題:①不同數(shù)據(jù)類(lèi)型之間的區(qū)別,包括所占存儲(chǔ)空間大小、所表達(dá)的數(shù)據(jù)范圍、精度等;②常用運(yùn)算符(即算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符)的運(yùn)算規(guī)則及優(yōu)先級(jí);③輸入輸出函數(shù)的語(yǔ)法規(guī)則及使用方法。第二章基本數(shù)據(jù)類(lèi)型和運(yùn)算符目錄§2.1基本數(shù)據(jù)類(lèi)型§2.2常量和變量§2.3輸入和輸出函數(shù)§2.4運(yùn)算符和表達(dá)式§2.5數(shù)據(jù)類(lèi)型轉(zhuǎn)換§2.6小結(jié)
§2.1基本數(shù)據(jù)類(lèi)型所謂類(lèi)型,就是對(duì)數(shù)據(jù)分配存儲(chǔ)單元的安排,包括存儲(chǔ)單元的長(zhǎng)度(占多少字節(jié))以及數(shù)據(jù)的存儲(chǔ)形式。不同的類(lèi)型分配不同的長(zhǎng)度和存儲(chǔ)形式。
§2.1基本數(shù)據(jù)類(lèi)型整型數(shù)據(jù)類(lèi)型缺省形式的整型數(shù)據(jù)類(lèi)型字節(jié)數(shù)取值范圍[signed]intint2-32768~32767(-215~215-1)unsigned[int]unsigned20~65535(0~216-1)[signed]short[int]short2-32768~32767(-215~215-1)unsignedshort[int]unsignedshort20~65535(0~216-1)[signed]long[int]long4-2147483648~2147483647(-231~231-1)unsignedlong[int]unsignedlong40~4294967295(0~232-1)[signed]longlong[int]longlong8-9223372036854775808~9223372036854775807(-263~263-1)unsignedlonglong[int]unsignedlonglong80~18446744073709551615(0~264-1)整型數(shù)據(jù)說(shuō)明:以上是ANSIC中的規(guī)定。C標(biāo)準(zhǔn)沒(méi)有具體規(guī)定各種類(lèi)型數(shù)據(jù)所占用存儲(chǔ)單元的長(zhǎng)度,只要求sizeof(short)≤sizeof(int)≤sizeof(long)≤sizeof(longlong),具體由各編譯系統(tǒng)自行決定的。sizeof是測(cè)量類(lèi)型或變量長(zhǎng)度的運(yùn)算符。
§2.1基本數(shù)據(jù)類(lèi)型例2.1整型數(shù)據(jù)溢出示例整數(shù)在內(nèi)存中是以補(bǔ)碼的形式存儲(chǔ)的,最高位是符號(hào)位,符號(hào)位為0時(shí)表示正數(shù),為1時(shí)表示負(fù)數(shù),而補(bǔ)碼中的符號(hào)位是參與運(yùn)算的。#include<stdio.h>#include<math.h>intmain(){ intmax,min; max=pow(2,31)-1; min=max+1; printf("max=%d,min=%d,sizeof(int)=%d\n",max,min,sizeof(int)); return0;}物極必反,避免極端
§2.1基本數(shù)據(jù)類(lèi)型字符型數(shù)據(jù)字符類(lèi)型以char作為類(lèi)型標(biāo)識(shí)符。一個(gè)字符變量只能容納一個(gè)字符,一個(gè)字符常量是用單引號(hào)括起來(lái)的字符,如'a'。字符型和整型之間有相通性,表現(xiàn)在:①字符型數(shù)據(jù)可以用整型形式輸出,反之,一定范圍內(nèi)的整數(shù)也可以用字符形式輸出charc1;inti;c1='a';i=97;printf("c1=%c,c1=%d,i=%d,i=%c\n",c1,c1,i,i);運(yùn)行后我們會(huì)得到c1=a,c1=97,i=97,i=a↙。②字符型變量和整型變量之間可以進(jìn)行混合運(yùn)算;charc1;c1='a';c1=c1-32;printf("c1=%c\n",c1);運(yùn)行后我們會(huì)得到c1=A↙。這是一段進(jìn)行英文大小寫(xiě)字母轉(zhuǎn)換的代碼。③整型變量可以接收字符常量,字符變量也可以接收整型數(shù)值,當(dāng)然這都要在一定范圍內(nèi)。unsignedchar的取值范圍是0到255。
§2.1基本數(shù)據(jù)類(lèi)型ASCII碼表注意字符′1′和整數(shù)1是不同的概念。字符′1′只是代表一個(gè)形狀為′1′的符號(hào),在需要時(shí)按原樣輸出,在內(nèi)存中以ASCII碼形式存儲(chǔ),占1個(gè)字節(jié)。而整數(shù)1是以整數(shù)存儲(chǔ)方式(二進(jìn)制補(bǔ)碼方式)存儲(chǔ)的,占2個(gè)或4個(gè)字節(jié)。整數(shù)運(yùn)算1+1等于整數(shù)2,而字符′1′+′1′并不等于整數(shù)2或字符′2′。
§2.1基本數(shù)據(jù)類(lèi)型實(shí)型數(shù)據(jù)實(shí)型包括單精度浮點(diǎn)型float和雙精度double,差別在于存儲(chǔ)長(zhǎng)度不一樣,所能表示的數(shù)據(jù)范圍及精度也不同。類(lèi)型類(lèi)型說(shuō)明符字節(jié)取值范圍字符型char1-128~127無(wú)符號(hào)字符型unsignedchar10~255單精度實(shí)型float4-3.4*10-38~+3.4*1038雙精度實(shí)型double8-1.7*10-308~1.7*10308
§2.1基本數(shù)據(jù)類(lèi)型Tips:①int是整型數(shù)據(jù)標(biāo)識(shí)符,其前可加short、long、unsigned等修飾符,進(jìn)而表達(dá)不同范圍的數(shù)據(jù)。②char是字符數(shù)據(jù)標(biāo)識(shí)符,與int型具有相通性。③float是單精度浮點(diǎn)型標(biāo)識(shí)符,double是雙精度浮點(diǎn)型標(biāo)識(shí)符。第二章基本數(shù)據(jù)類(lèi)型和運(yùn)算符目錄§2.1基本數(shù)據(jù)類(lèi)型§2.2常量和變量§2.3輸入和輸出函數(shù)§2.4運(yùn)算符和表達(dá)式§2.5數(shù)據(jù)類(lèi)型轉(zhuǎn)換§2.6小結(jié)
§2.2常量與變量在計(jì)算機(jī)高級(jí)語(yǔ)言中,數(shù)據(jù)的兩種表現(xiàn)形式:常量變量常量整型常量2實(shí)型常量3字符常量4符號(hào)常量1
§2.2常量與變量——加前綴,一般代表進(jìn)制。例如:十進(jìn)制整型常量——沒(méi)有前綴,如18,23……八進(jìn)制整型常量——以數(shù)字0作為其前綴,數(shù)碼為阿拉伯?dāng)?shù)字0~7,如07(對(duì)應(yīng)十進(jìn)制數(shù)7),015(對(duì)應(yīng)十進(jìn)制數(shù)13)…十六進(jìn)制整型常量——以0x或0X作為其前綴,數(shù)碼為阿拉伯?dāng)?shù)字0~9,英文字母A~F或a~f,如0X2A(對(duì)應(yīng)十進(jìn)制數(shù)42),0XA0(對(duì)應(yīng)十進(jìn)制數(shù)160)……——加后綴,代表類(lèi)型。例如:①長(zhǎng)整型常量——以字母L或l為后綴,如158L(為十進(jìn)制數(shù)158),077L(八進(jìn)制長(zhǎng)整數(shù),對(duì)應(yīng)十進(jìn)制數(shù)63)……②無(wú)符號(hào)型常量——以字母u或U為后綴,如358u……常量整型常量2實(shí)型常量3字符常量4符號(hào)常量1
§2.2常量與變量——加前綴,一般代表進(jìn)制。例如:十進(jìn)制整型常量——沒(méi)有前綴,如18,23……八進(jìn)制整型常量——以數(shù)字0作為其前綴,數(shù)碼為阿拉伯?dāng)?shù)字0~7,如07(對(duì)應(yīng)十進(jìn)制數(shù)7),015(對(duì)應(yīng)十進(jìn)制數(shù)13)…十六進(jìn)制整型常量——以0x或0X作為其前綴,數(shù)碼為阿拉伯?dāng)?shù)字0~9,英文字母A~F或a~f,如0X2A(對(duì)應(yīng)十進(jìn)制數(shù)42),0XA0(對(duì)應(yīng)十進(jìn)制數(shù)160)……——加后綴,代表類(lèi)型。例如:①長(zhǎng)整型常量——以字母L或l為后綴,如158L(為十進(jìn)制數(shù)158),077L(八進(jìn)制長(zhǎng)整數(shù),對(duì)應(yīng)十進(jìn)制數(shù)63)……②無(wú)符號(hào)型常量——以字母u或U為后綴,如358u……常量整型常量2實(shí)型常量3字符常量4符號(hào)常量1
§2.2常量與變量用單括號(hào)括起來(lái)的一個(gè)字符就是字符常量,例如’a’、’0’、’+’、’\n’等,特點(diǎn)如下:①字符常量必須用單括號(hào)括起來(lái),不能使用雙引號(hào)或其他符號(hào)。②以反斜線“\”開(kāi)頭,后跟一個(gè)或幾個(gè)字符表示的字符稱(chēng)為轉(zhuǎn)義字符,表2.2給出了常見(jiàn)轉(zhuǎn)義字符及其含義。除轉(zhuǎn)義字符外,單括號(hào)里面只能是單個(gè)字符。③除轉(zhuǎn)義字符外,每個(gè)字符都與它的ASCII碼一一對(duì)應(yīng),二者都是等價(jià)的,如’1’的ASCII碼是十進(jìn)制的49,因此字符’1’在參與算術(shù)運(yùn)算時(shí),就表示49在參與運(yùn)算。轉(zhuǎn)義字符
§2.2常量與變量轉(zhuǎn)義字符含義ASCII碼\n回車(chē)換行,將光標(biāo)移到下一行的開(kāi)始位置10\t光標(biāo)移到下一個(gè)水平制表位置9\b退格8\r回車(chē),將光標(biāo)移到當(dāng)前行的開(kāi)始位置13\"雙引號(hào)34\'單引號(hào)39\\反斜線符
\92\ddd1~3位八進(jìn)制數(shù)所代表的字符如\141代表‘a(chǎn)’\xhh1~2位十六進(jìn)制數(shù)所代表的字符如\x41代表‘A’常量整型常量2實(shí)型常量3字符常量4符號(hào)常量1
§2.2常量與變量用標(biāo)識(shí)符表示常量,稱(chēng)之為符號(hào)常量。符號(hào)常量使用之前須定義,格式如下:#define標(biāo)識(shí)符常量通過(guò)該格式把標(biāo)識(shí)符定義為其后的常量值,這樣以后在程序中所有出現(xiàn)該標(biāo)識(shí)符的地方均以該常量值代之。注意,定義格式中常量值后面沒(méi)有分號(hào)。習(xí)慣上表示符號(hào)常量的標(biāo)識(shí)符用大寫(xiě)字母。
§2.2常量和變量例2.2符號(hào)常量的使用,思考使用符號(hào)常量有什么好處①提高代碼可讀性②便于維護(hù)③減少錯(cuò)誤#include<stdio.h>#definePI3.14159intmain(){ floats,r=5; s=PI*r*r; printf("s=%f\n",s); return0;}
§2.2常量和變量Tips:①對(duì)于整型常量,在代表數(shù)值的數(shù)碼之前或之后可以加上一定的符號(hào):——前綴0代表8進(jìn)制;前綴0x或0X代表16進(jìn)制;——后綴L或l代表long;后綴U或u代表unsigned。②對(duì)于實(shí)型常量,有兩種表示形式——十進(jìn)制形式,由數(shù)碼0~9和小數(shù)點(diǎn)組成,小數(shù)點(diǎn)不可省略;——指數(shù)形式,一般形式為aEn或aen,階碼標(biāo)志的兩側(cè)不能為空,且右側(cè)必須為整數(shù)。③字符常量必須用單括號(hào)括起來(lái),以反斜線“\”開(kāi)頭的是轉(zhuǎn)義字符。④符號(hào)常量定義格式為:#define標(biāo)識(shí)符
常量變量變量代表一個(gè)有名字的、具有特定屬性的一個(gè)存儲(chǔ)單元。變量用來(lái)存放數(shù)據(jù),也就是存放變量的值。在程序運(yùn)行期間,變量的值是可以改變的。變量必須先定義,后使用。
§2.2常量與變量定義格式如下:數(shù)據(jù)類(lèi)型說(shuō)明符變量名1,變量名2,……,變量名n;標(biāo)識(shí)符標(biāo)識(shí)符就是一個(gè)對(duì)象的名字。用于標(biāo)識(shí)變量、符號(hào)常量、函數(shù)、數(shù)組、類(lèi)型等標(biāo)識(shí)符只能由字母、數(shù)字和下劃線3種字符組成,且第1個(gè)字符必須為字母或下劃線注意變量名中區(qū)分大小寫(xiě)字母不能使用關(guān)鍵字作為變量名變量的名字應(yīng)該盡量反映變量在程序中的作用與含義
§2.2常量與變量法律法規(guī)
§2.2常量和變量例2.3變量的使用,思考變量存儲(chǔ)單元的變化。#include<stdio.h>intmain(){intsum=0,i=1; sum=i+1;return0;}
(a)執(zhí)行變量定義語(yǔ)句時(shí)的存儲(chǔ)單元(b)執(zhí)行語(yǔ)句sum=i+1;之后存儲(chǔ)單元
§2.2常量和變量Tips:①變量使用之前必須先定義。②變量名由字母、數(shù)字和下劃線組成,且是以字母或下劃線開(kāi)頭的字符序列。③變量定義語(yǔ)句通常出現(xiàn)在函數(shù)體的開(kāi)頭部分。第二章基本數(shù)據(jù)類(lèi)型和運(yùn)算符目錄§2.1基本數(shù)據(jù)類(lèi)型§2.2常量和變量§2.3輸入和輸出函數(shù)§2.4運(yùn)算符和表達(dá)式§2.5數(shù)據(jù)類(lèi)型轉(zhuǎn)換§2.6小結(jié)
§2.3輸入和輸出函數(shù)輸入輸出是以計(jì)算機(jī)主機(jī)為主體而言的1C語(yǔ)言本身不提供輸入輸出語(yǔ)句輸入和輸出操作是由C標(biāo)準(zhǔn)函數(shù)庫(kù)中的函數(shù)來(lái)實(shí)現(xiàn)的。優(yōu)點(diǎn):簡(jiǎn)化編譯系統(tǒng)簡(jiǎn)化增強(qiáng)通用性和可移植性2要在程序文件的開(kāi)頭用預(yù)處理指令#include把有關(guān)頭文件放在本程序中#include<stdio.h>3有關(guān)輸入輸出的概念輸出輸入#include指令說(shuō)明三種形式:#include"c:\cpp\include\myfile.h"
#include"myfile.h“
#include<myfile.h>
按指定路徑查找文件
源程序文件所在目錄
C編譯系統(tǒng)指定的include目錄
§2.3輸入和輸出函數(shù)格式化輸出函數(shù)——printf用來(lái)向終端(或系統(tǒng)隱含指定的輸出設(shè)備)輸出若干個(gè)任意類(lèi)型的數(shù)據(jù)。printf(格式控制,輸出表列)printf("i=%d,c=%c\n",i,c)普通字符格式聲明格式控制
輸出列表(1)“格式控制”是用雙引號(hào)括起來(lái)的一個(gè)字符串,稱(chēng)為格式控制字符串,簡(jiǎn)稱(chēng)格式字符串。包括:
①格式聲明。格式聲明由“%”和格式字符組成。作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式后輸出。②普通字符。普通字符即需要在輸出時(shí)原樣輸出的字符。
(2)輸出表列是程序需要輸出的一些數(shù)據(jù),可以是常量、變量或表達(dá)式。
§2.3輸入和輸出函數(shù)格式控制說(shuō)明符說(shuō)明%d以十進(jìn)制形式輸出整數(shù)(正數(shù)不輸出符號(hào))%o以八進(jìn)制形式輸出整數(shù)(不輸出前導(dǎo)符O)%x以十六進(jìn)制形式輸出整數(shù)(不輸出前導(dǎo)符Ox或OX)%u以無(wú)符號(hào)十進(jìn)制形式輸出整數(shù)%c以字符形式輸出一個(gè)字符%s輸出字符串%f或%e以小數(shù)形式輸出浮點(diǎn)數(shù),保留小數(shù)點(diǎn)后6位%lf或%le以指數(shù)形式輸出浮點(diǎn)數(shù)%m.nfm,n為正整數(shù),輸出浮點(diǎn)數(shù)總寬度為m,包括小數(shù)點(diǎn),保留n位小數(shù)(1)printf函數(shù)輸出時(shí),務(wù)必注意輸出對(duì)象的類(lèi)型應(yīng)與格式說(shuō)明匹配,否則將會(huì)出現(xiàn)錯(cuò)誤。(2)如果想輸出字符“%”,應(yīng)該在“格式控制字符串”中用連續(xù)兩個(gè)“%”表示,如:printf(″%f%%\n″,1.0/3);
§2.3輸入和輸出函數(shù)例2.4printf函數(shù)的使用。#include<stdio.h>intmain(){intc;charch;floats;c=12345;ch='a';s=12.34;printf("c=%d\n",c);printf("c=%3d\n",c);printf("c=%7d\n",c);printf("c=%-7d\n",c);printf("s=%8.2f\n",s);
printf("ch=%c\n",ch);
printf("%s","China");
return0;}
不足限制寬度的情況會(huì)在輸出數(shù)據(jù)的左側(cè)補(bǔ)上空格以滿(mǎn)足限制寬度,若想先輸出數(shù)據(jù)再輸出空格,即空格在數(shù)據(jù)右側(cè)出現(xiàn),則需在寬度值前加“-”
§2.3輸入和輸出函數(shù)格式化輸出函數(shù)——scanf用來(lái)輸入數(shù)據(jù)。scanf(格式控制,地址表列)scanf("a=%f,b=%f,c=%f",&a,&b,&c);普通字符格式聲明格式控制
地址列表(1)“格式控制”是用雙引號(hào)括起來(lái)的一個(gè)字符串,含義同printf函數(shù)。包括:
①格式聲明。以%開(kāi)始,以一個(gè)格式字符結(jié)束,中間可以插入附加的字符。②普通字符。
(2)地址表列是由若干個(gè)地址組成的表列,可以是變量的地址,或字符串的首地址。
§2.3輸入和輸出函數(shù)(1)scanf函數(shù)中的格式控制后面應(yīng)當(dāng)是變量地址,而不是變量名。應(yīng)與上述格式說(shuō)明匹配,否則將會(huì)出現(xiàn)錯(cuò)誤。(2)如果在格式控制字符串中除了格式聲明以外還有其他字符,則在輸入數(shù)據(jù)時(shí)在對(duì)應(yīng)的位置上應(yīng)輸入與這些字符相同的字符。為避免出錯(cuò),在控制串中最好不要加入其它成分,以免在輸入時(shí)忘掉或不匹配。(3)在用“%c”格式聲明輸入字符時(shí),空格字符和“轉(zhuǎn)義字符”中的字符都作為有效字符輸入。(4)在輸入數(shù)值數(shù)據(jù)時(shí),如輸入空格、回車(chē)、Tab鍵或遇非法字符(不屬于數(shù)值的字符),認(rèn)為該數(shù)據(jù)結(jié)束。#include<stdio.h>intmain(){inti,j,k,l,m,n;charch;scanf("%d,%d,%d",&i,&j,&k);scanf("%d%d%d",&l,&m,&n);scanf("%c",&ch);printf("%c",ch);return0;}例2.5scanf函數(shù)的使用。
§2.3輸入和輸出函數(shù)Tips:①C語(yǔ)言中使用輸入輸出函數(shù)需要加頭文件#include<stdio.h>②printf()是格式化輸出函數(shù),格式控制串用雙引號(hào)括起來(lái),輸出表列中多個(gè)參數(shù)用逗號(hào)分開(kāi),且類(lèi)型要與控制串中的控制符一致,常用的格式控制說(shuō)明符有%d、%f、%lf、%c、%s等。③scanf()是格式化輸入函數(shù),輸入列表為變量地址,格式控制串中若有普通字符要原樣輸入,輸入多個(gè)數(shù)據(jù)時(shí)(控制串中沒(méi)有普通字符的情況下)可使用空格或回車(chē)或Tab鍵作為分隔符;“%c”格式下要注意空格、回車(chē)、Tab鍵都是有效字符。
§2.3輸入和輸出函數(shù)字符輸出函數(shù)——putchar從計(jì)算機(jī)向顯示器輸出一個(gè)字符。putchar(c)用putchar函數(shù)既可以輸出可顯示字符,也可以輸出控制字符和轉(zhuǎn)義字符。putchar(c)中的c可以是字符常量、整型常量、字符變量或整型變量(其值在字符的ASCII代碼范圍內(nèi))。字符輸出函數(shù)——getchar向計(jì)算機(jī)輸入一個(gè)字符。字符變量=getchar()①函數(shù)沒(méi)有參數(shù)。②只能接收一個(gè)字符。③不僅可以從輸入設(shè)備獲得一個(gè)可顯示的字符,而且可以獲得控制字符。“如何避免回車(chē)符輸入給ch”,可在scanf("%c",&ch);前先利用getchar()接收一下那個(gè)回車(chē)符,然后再次輸入的字符就會(huì)放到ch中。④用getchar函數(shù)得到的字符可以賦給一個(gè)字符變量或整型變量,也可以作為表達(dá)式的一部分。
§2.3輸入和輸出函數(shù)例2.6putchar與getchar的使用。#include<stdio.h>intmain(){ charch,pre,pos; ch=getchar(); pre=ch-1; pos=ch+1; putchar(pre); putchar('\n'); putchar(ch); putchar('\n'); putchar(pos); putchar('\n'); return0;}
Tips:getchar()與putchar()是C語(yǔ)言中單個(gè)字符的輸入輸出函數(shù)。使用格式為:字符變量=getchar();putchar(字符對(duì)象);第二章基本數(shù)據(jù)類(lèi)型和運(yùn)算符目錄§2.1基本數(shù)據(jù)類(lèi)型§2.2常量和變量§2.3輸入和輸出函數(shù)§2.4運(yùn)算符和表達(dá)式§2.5數(shù)據(jù)類(lèi)型轉(zhuǎn)換§2.6小結(jié)
§2.4運(yùn)算符和表達(dá)式運(yùn)算符1算術(shù)運(yùn)算符
+-*/%++--2關(guān)系運(yùn)算符
><==>=<=!=3邏輯運(yùn)算符
!&&||45賦值運(yùn)算符
=及其擴(kuò)展賦值運(yùn)算符6條件運(yùn)算符
?:7逗號(hào)運(yùn)算符
,8指針運(yùn)算符
*&9求字節(jié)數(shù)運(yùn)算符
sizeof10強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符
(類(lèi)型)11成員運(yùn)算符
.->12下標(biāo)運(yùn)算符
[]其他
如位運(yùn)算符、函數(shù)調(diào)用運(yùn)算符()
§2.4運(yùn)算符和表達(dá)式算術(shù)運(yùn)算符和表達(dá)式——基本算術(shù)運(yùn)算符運(yùn)算符含義C表達(dá)式+算術(shù)加5+3-算術(shù)減5-3*乘法運(yùn)算5*3/除法運(yùn)算5/3或5/3.0%求模(余數(shù))運(yùn)算5%3①如果參加+、-、*、/運(yùn)算的兩個(gè)數(shù)有一個(gè)為實(shí)數(shù),則結(jié)果為double型,因?yàn)樗袑?shí)數(shù)都按照double進(jìn)行計(jì)算。②除法運(yùn)算符“/”的結(jié)果和其運(yùn)算對(duì)象有關(guān)。如果參與運(yùn)算的兩個(gè)數(shù)都是整數(shù),所得的結(jié)果是商的整數(shù)部分;如果有一個(gè)是實(shí)數(shù),結(jié)果的類(lèi)型為實(shí)數(shù)型。
③用求余運(yùn)算符%進(jìn)行運(yùn)算,要求兩個(gè)操作數(shù)均為整型,結(jié)果為兩數(shù)相除所得的余數(shù)。求余也稱(chēng)為求模。一般情況下,余數(shù)的符號(hào)與被除數(shù)符號(hào)相同。如:-8%5=-3,8%-5=3。
§2.4運(yùn)算符和表達(dá)式例2.7算術(shù)運(yùn)算符的使用。#include<stdio.h>intmain(){printf("\n%d,%d\n",5/3,-5/3);printf("%f,%f\n",5.0/3,-5.0/3);printf("\n10%%3=%d,-10%%3=%d,10%%-3=%d,-10%%-3=%d\n",10%3,-10%3,10%-3,-10%-3);return0;}
①對(duì)于求余運(yùn)算來(lái)說(shuō),結(jié)果的符號(hào)只與被除數(shù)的符號(hào)有關(guān)。②要輸出一個(gè)“%”,在格式控制字符串中必須有兩個(gè)“%”,即“%%”。
§2.4運(yùn)算符和表達(dá)式++i,--i 在使用i之前,先使i的值加/減1i++,i-- 在使用i之后,使i的值加/減1++i是先執(zhí)行i=i+1,再使用i的值;而i++是先使用i的值,再執(zhí)行i=i+1。inti=3,j;j=++i; //i的值先變成4,再賦給j,j的值為4inti=3,j;j=i++;
//先將i的值3賦給j,j的值為3,然后i變?yōu)椋磇nti=3;printf(“%d”,++i); //輸出4inti=3;printf(“%d”,i++);
//輸出3建議謹(jǐn)慎使用++和--運(yùn)算符,只用最簡(jiǎn)單的形式,即i++,i--,且把它們作為單獨(dú)的表達(dá)式。算術(shù)運(yùn)算符和表達(dá)式——自增++自減--運(yùn)算符
§2.4運(yùn)算符和表達(dá)式例2.8思考以下幾個(gè)程序段的輸出。程序段1:inti=3;printf("%d",++i);程序段2:inti=3;printf("%d",i++);程序段3:
inti=3;printf("%d,%d\n",k,k++);
自增自減運(yùn)算符的前置形式是先把變量值加1或減1,然后用新的值參與表達(dá)式的運(yùn)算;后置形式是先用變量的原始值參與表達(dá)式的運(yùn)算,然后再對(duì)變量的值加1或減1。
§2.4運(yùn)算符和表達(dá)式算術(shù)運(yùn)算符和表達(dá)式——算術(shù)表達(dá)式用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱(chēng)操作數(shù))連接起來(lái)的、符合C語(yǔ)法規(guī)則的式子稱(chēng)為C算術(shù)表達(dá)式。運(yùn)算對(duì)象包括常量、變量、函數(shù)等。C語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)(例如先乘除后加減),還規(guī)定了運(yùn)算符的結(jié)合性。在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級(jí)別順序執(zhí)行,當(dāng)在一個(gè)運(yùn)算對(duì)象兩側(cè)的運(yùn)算符的優(yōu)先級(jí)別相同時(shí),則按規(guī)定的“結(jié)合方向”處理。C語(yǔ)言規(guī)定了各種運(yùn)算符的結(jié)合方向(結(jié)合性),“自左至右的結(jié)合方向”又稱(chēng)“左結(jié)合性”,即運(yùn)算對(duì)象先與左面的運(yùn)算符結(jié)合。相反“自右至左的結(jié)合方向”稱(chēng)為“右結(jié)合性”。算術(shù)表達(dá)式中出現(xiàn)多種算術(shù)運(yùn)算符時(shí),其優(yōu)先級(jí)為:++、--的優(yōu)先級(jí)高于*、/、%的優(yōu)先級(jí)高于+、-的優(yōu)先級(jí)。除了前置形式的++、--運(yùn)算符是右結(jié)合,其他的運(yùn)算符都是左結(jié)合的。
§2.4運(yùn)算符和表達(dá)式例2.9求值。設(shè)有定義:inta=7,b=5;floatx=2.5;計(jì)算表達(dá)式x+a%3*b++%2/4的值。具體過(guò)程如下:x+a%3*b++%2/4=2.5+7%3*5++%2/4=2.5+7%3*6%2/4=2.5+1*6%2/4=2.5+6%2/4=2.5+0/4=2.5+0=2.5
§2.4運(yùn)算符和表達(dá)式賦值運(yùn)算符和表達(dá)式——一般賦值運(yùn)算符和表達(dá)式C語(yǔ)言中,“=”是一般賦值運(yùn)算符,由“=”連接的式子稱(chēng)為賦值表達(dá)式賦值運(yùn)算右邊的表達(dá)式本身又可能是賦值表達(dá)式,也就是說(shuō)賦值運(yùn)算可以遞歸定義,所以有a=b=2這樣的寫(xiě)法。賦值運(yùn)算屬于右結(jié)合賦值運(yùn)算符的優(yōu)先級(jí)是除逗號(hào)運(yùn)算符之外最低的。如“x=(a=5)+(b=8)”如果賦值運(yùn)算符兩邊的數(shù)據(jù)類(lèi)型不相同,系統(tǒng)將自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換,即把賦值號(hào)右邊的類(lèi)型換成左邊的類(lèi)型,使之適應(yīng)左邊變量的要求。
§2.4運(yùn)算符和表達(dá)式例2.10賦值運(yùn)算中類(lèi)型轉(zhuǎn)換應(yīng)用示例。#include<stdio.h>intmain(){inta,b=322;floatx,y=8.88;charc1='k',c2;a=y;printf("%d,",a);x=b;a=c1;c2=b;printf("%f,%d,%c",x,a,c2);return0;}類(lèi)型轉(zhuǎn)換具體規(guī)定:1實(shí)型(float,double)賦予整型(int),舍去小數(shù)部分。2整型(int)賦予實(shí)型(float,double),數(shù)值不變,但將以浮點(diǎn)形式存放,即增加小數(shù)部分(小數(shù)部分的值為0)。3字符型(char)賦予整型(int),由于字符型長(zhǎng)度為一個(gè)字節(jié),而整型數(shù)據(jù)的長(zhǎng)度為4個(gè)字節(jié),故將字符的ASCII碼值放到整型量的低八位中,高位為0。4整型(int)賦予字符型(char),只把低八位賦予字符變量。
§2.4運(yùn)算符和表達(dá)式賦值運(yùn)算符和表達(dá)式——復(fù)合賦值運(yùn)算符和表達(dá)式
在賦值符“=”之前加上其他雙目運(yùn)算符可構(gòu)成復(fù)合賦值符,雙目運(yùn)算符可為算術(shù)運(yùn)算符+、-、*、/、%,也可為位運(yùn)算符(本書(shū)不做介紹),表達(dá)形式為:
變量
雙目運(yùn)算符=表達(dá)式上述表達(dá)式等價(jià)于:
變量=變量
雙目運(yùn)算符
表達(dá)式如inta=1;a+=5;等價(jià)于inta=1;a=a+5;。注意,使用復(fù)合賦值運(yùn)算符時(shí)變量一定要有初值,否則會(huì)出錯(cuò)。
§2.4運(yùn)算符和表達(dá)式Tips:①“=”為一般賦值運(yùn)算符,進(jìn)行賦值運(yùn)算時(shí)首先計(jì)算右邊表達(dá)式的值,然后把它賦給左邊的變量;②賦值運(yùn)算屬于右結(jié)合,優(yōu)先級(jí)是除逗號(hào)運(yùn)算符之外最低的;③如果賦值運(yùn)算符兩邊的數(shù)據(jù)類(lèi)型不相同,系統(tǒng)將自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換,即把賦值號(hào)右邊的類(lèi)型換成左邊的類(lèi)型,使之適應(yīng)左邊變量的要求。④賦值運(yùn)算符與算術(shù)運(yùn)算符結(jié)合構(gòu)成復(fù)合賦值運(yùn)算符:+=、-=、*=、/=、%=,使用時(shí)變量一定要有初值。
§2.4運(yùn)算符和表達(dá)式關(guān)系運(yùn)算符和表達(dá)式C語(yǔ)言中的關(guān)系運(yùn)算符主要有以下6種:<(小于)、>(大于)、<=(小于等于)、>=(大于等于)、==(等于等于)、!=(不等于)關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符。在關(guān)系運(yùn)算符內(nèi)部,<、>、<=、>=四個(gè)運(yùn)算符優(yōu)先級(jí)相同,高于==、!=運(yùn)算符,==、!=運(yùn)算符的優(yōu)先級(jí)也相同。關(guān)系運(yùn)算符都是雙目運(yùn)算符,其結(jié)合性均為左結(jié)合。由關(guān)系運(yùn)算符構(gòu)成的關(guān)系表達(dá)式的值只有1(真)或0(假)兩個(gè)。關(guān)系運(yùn)算符經(jīng)常被用于構(gòu)成條件表達(dá)式,在if語(yǔ)句、for語(yǔ)句、while語(yǔ)句、do…while語(yǔ)句中表示條件。
§2.4運(yùn)算符和表達(dá)式例2.11關(guān)系表達(dá)式判斷。如果變量x的值為7,分析表達(dá)式”3<=x<=5”的結(jié)果。在C語(yǔ)言中如何判斷x是否在3和5之間(要借助于下面介紹的邏輯運(yùn)算符)。思考在數(shù)學(xué)中,3<=x<=5式子的作用是用于判斷x是否在3和5之間,因此按數(shù)學(xué)中的觀念來(lái)理解,這個(gè)表達(dá)式的值應(yīng)該為0。但是在C語(yǔ)言中它是一個(gè)關(guān)系表達(dá)式,采用左結(jié)合的運(yùn)算方式,運(yùn)算順序?yàn)樽宰笙蛴遥紫扰袛?<=x是否為真,然后再判斷該結(jié)果與5之間的關(guān)系。無(wú)論x的值為多少,作為關(guān)系表達(dá)式3<=x結(jié)果非0即1,而0和1都小于5,因此在C語(yǔ)言中3<=x<=5表達(dá)式的值永真,即其值永遠(yuǎn)都是1。
§2.4運(yùn)算符和表達(dá)式Tips:①關(guān)系運(yùn)算符用來(lái)比較兩個(gè)運(yùn)算對(duì)象的大小,比較的結(jié)果是真和假兩個(gè)邏輯值;②相等運(yùn)算符為“==”,不要誤寫(xiě)成賦值運(yùn)算符“=”;③在關(guān)系運(yùn)算符內(nèi)部,<、>、<=、>=四個(gè)運(yùn)算符優(yōu)先級(jí)相同,高于==、!=運(yùn)算符,==、!=運(yùn)算符的優(yōu)先級(jí)也相同。
§2.4運(yùn)算符和表達(dá)式邏輯運(yùn)算符和表達(dá)式C語(yǔ)言中有3個(gè)邏輯運(yùn)算符,按由高到低的優(yōu)先級(jí)次序排列如下:!(邏輯非)&&(邏輯與)||(邏輯或)&&和||是雙目運(yùn)算符,!是單目運(yùn)算符。和關(guān)系運(yùn)算一樣,邏輯運(yùn)算的結(jié)果也是邏輯值,即真(用1表示)或假(用0表示)。邏輯運(yùn)算符中!是右結(jié)合,&&和||均為左結(jié)合。如?。等價(jià)于!(!x),a||b||c等價(jià)于(a||b)||c。
§2.4運(yùn)算符和表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來(lái)構(gòu)成的表達(dá)式稱(chēng)為邏輯表達(dá)式。ab!aa&&ba||b真(非0)真(非0)011真(非0)假(0)001假(0)真(非0)101假(0)假(0)100?。ㄟ壿嫹牵?、算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、&&(邏輯與)、||(邏輯或)、=(賦值運(yùn)算符)四類(lèi)運(yùn)算符的優(yōu)先級(jí)由高到低順序如下:
§2.4運(yùn)算符和表達(dá)式例2.11邏輯運(yùn)算符的應(yīng)用。#include<stdio.h>intmain(){inta,b,c;a=b=c=1;printf("%d\n",a&&b&&c);a=0;b=c=1;printf("%d\n",a&&b&&c);a=b=c=0;printf("%d\n",a||b||c);a=1;b=c=0;printf("%d\n",a||b||c);return0;}執(zhí)行后結(jié)果為1↙、0↙、0↙、1↙分析下面程序段的輸出結(jié)果:(1)a=0;b=c=1;printf("%d\n",++a&&b&&c);(2)a=1;b=c=0; printf("%d\n",a||b++||c);
§2.4運(yùn)算符和表達(dá)式Tips:①邏輯運(yùn)算符包括!(邏輯非)、&&(邏輯與)、||(邏輯或),邏輯運(yùn)算的結(jié)果為真或假;②在求表達(dá)式a&&b的值時(shí),如果a的值為假,則不需要對(duì)b進(jìn)行計(jì)算。在求表達(dá)式a||b的值時(shí),如果a的值為真,則不需要對(duì)b進(jìn)行計(jì)算;③目前我們所學(xué)的四類(lèi)運(yùn)算符的優(yōu)先級(jí)由高到低順序如下:?。ㄟ壿嫹牵⑺阈g(shù)運(yùn)算符、關(guān)系運(yùn)算符、&&(邏輯與)、||(邏輯或)、=(賦值運(yùn)算符)
§2.4運(yùn)算符和表達(dá)式其他運(yùn)算符——逗號(hào)運(yùn)算符和表達(dá)式逗號(hào)在C語(yǔ)言中主要有兩個(gè)作用,一個(gè)是作為分隔符,一個(gè)是作為運(yùn)算符。作為運(yùn)算符,它是把兩個(gè)表達(dá)式連接起來(lái)組成一個(gè)表達(dá)式,稱(chēng)為逗號(hào)表達(dá)式。一般形式為:表達(dá)式1,表達(dá)式2,……,表達(dá)式n在求值時(shí),是從左向右進(jìn)行計(jì)算,即先求表達(dá)式1的值,再求表達(dá)式2的值,……,最后求表達(dá)式n的值,其中后面表達(dá)式的計(jì)算可以利用前面表達(dá)式的計(jì)算結(jié)果,而最后一個(gè)表達(dá)式n的值就是整個(gè)逗號(hào)表達(dá)式的結(jié)果,其類(lèi)型也是整個(gè)表達(dá)式的類(lèi)型。逗號(hào)運(yùn)算符的優(yōu)先級(jí)是最低的,其結(jié)合性是自左向右的。
§2.4運(yùn)算符和表達(dá)式例2.12逗號(hào)運(yùn)算符的應(yīng)用。#include<stdio.h>intmain(){inta=2,b=4,c=6,x,y;y=(x=a+b,b+c);printf("y=%d,x=%d",y,x);return0;}執(zhí)行后結(jié)果為y=10,x=6①在程序中使用逗號(hào)表達(dá)式,通常是要分別求逗號(hào)表達(dá)式內(nèi)各表達(dá)式的值,并不一定要求整個(gè)逗號(hào)表達(dá)式的值。②逗號(hào)表達(dá)式一般形式中的各表達(dá)式本身也可以是逗號(hào)表達(dá)式:
(表達(dá)式1,(表達(dá)式2,(…,表達(dá)式n)))形成嵌套情形,整個(gè)逗號(hào)表達(dá)式的值等于表達(dá)式n的值。
§2.4運(yùn)算符和表達(dá)式Tips:①逗號(hào)在C語(yǔ)言中主要有兩個(gè)作用,一個(gè)是作為分隔符,一個(gè)是作為運(yùn)算符;②作為運(yùn)算符時(shí),在求逗號(hào)表達(dá)式的值時(shí),是從左向右進(jìn)行計(jì)算,最后一個(gè)表達(dá)式的值就是整個(gè)逗號(hào)表達(dá)式的結(jié)果;③逗號(hào)運(yùn)算符的優(yōu)先級(jí)是最低的,其結(jié)合性是自左向右的。
§2.4運(yùn)算符和表達(dá)式其他運(yùn)算符——條件運(yùn)算符和表達(dá)式條件運(yùn)算符“?:”是C語(yǔ)言中唯一的一個(gè)三目運(yùn)算符,條件表達(dá)式形式為:
表達(dá)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年電商主播商品挑選與直播氛圍掌控技能測(cè)試
- 2026年語(yǔ)言文學(xué)與文化素養(yǎng)考試題目集
- 2026年人工智能技術(shù)與應(yīng)用知識(shí)題庫(kù)
- 2026年鄭州西亞斯學(xué)院?jiǎn)握芯C合素質(zhì)考試備考題庫(kù)含詳細(xì)答案解析
- 2026年山西警官職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能考試參考題庫(kù)含詳細(xì)答案解析
- 2026年山西職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026年貴州電子信息職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)筆試模擬試題含詳細(xì)答案解析
- 2026年蘭州資源環(huán)境職業(yè)技術(shù)大學(xué)單招職業(yè)技能考試備考試題含詳細(xì)答案解析
- 2026年上海市事業(yè)單位公開(kāi)招聘考試重點(diǎn)試題及答案解析
- 2026年齊齊哈爾理工職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試模擬試題含詳細(xì)答案解析
- 建筑施工機(jī)械使用安全手冊(cè)
- GB/T 22200.6-2025低壓電器可靠性第6部分:接觸器式繼電器可靠性試驗(yàn)方法
- 口腔感控培訓(xùn)教育制度
- 2026四川成都錦江投資發(fā)展集團(tuán)有限責(zé)任公司招聘18人筆試備考試題及答案解析
- 英語(yǔ)培訓(xùn)班工資制度
- 房地產(chǎn) -2025年重慶商業(yè)及物流地產(chǎn)市場(chǎng)回顧與展望2025年重慶商業(yè)及物流地產(chǎn)市場(chǎng)回顧與展望
- 2025年湖南邵陽(yáng)經(jīng)開(kāi)貿(mào)易投資有限公司招聘12人參考試題附答案解析
- 第三方管理制度規(guī)范
- 初步設(shè)計(jì)評(píng)審收費(fèi)標(biāo)準(zhǔn)與流程說(shuō)明
- 城市感知體系研究報(bào)告2025
- 肛裂護(hù)理課件
評(píng)論
0/150
提交評(píng)論