版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第二章12/13/20221第二章12/12/20221本章要點數(shù)據(jù)的描述規(guī)則數(shù)據(jù)的操作規(guī)則12/13/20222本章要點數(shù)據(jù)的描述規(guī)則12/12/20222
主要內(nèi)容2.1C的數(shù)據(jù)類型2.2常量與變量2.3整型數(shù)據(jù)2.4浮點型數(shù)據(jù)運行2.5字符型數(shù)據(jù)
12/13/20223主要內(nèi)容2.1C的數(shù)據(jù)類型12/12/20223
主要內(nèi)容2.6變量賦初值
2.7各類數(shù)值型數(shù)據(jù)間的混合運算
2.8算術(shù)運算符和算術(shù)表達式
2.9賦值運算符和賦值表達式
2.10逗號運算符和逗號表達式12/13/20224主要內(nèi)容2.6變量賦初值12/12/20224數(shù)值的表示方法——原碼、反碼和補碼原碼:最高位為符號位,其余各位為數(shù)值本身的絕對值反碼:正數(shù):反碼與原碼相同負數(shù):符號位為1,其余位對原碼取反補碼:正數(shù):原碼、反碼、補碼相同負數(shù):最高位為1,其余位為原碼取反,再對整個數(shù)加112/13/20225數(shù)值的表示方法——原碼、反碼和補碼12/12/20225原碼反碼補碼+7000001110000011100000111-7100001111111100011111001+0000000000000000000000000-0100000001111111100000000數(shù)的范圍01111111~11111111(-127~+127)01111111~10000000(-127~+127)01111111~10000000(-128~+127)(用一字節(jié)表示數(shù))純整數(shù)的補碼最小可以表示到-2^n。這時在[-2^n]中,符號位的1既表示符號“-”,也表示數(shù)值2^n。
若要一個負數(shù)變補碼,其方法是符號位置1,其余各位0變1,1變0,然后在最末位上加1。負數(shù)補碼轉(zhuǎn)換成十進制數(shù):最高位不動,其余位取反加1例補碼:11111001取反:10000110加1:10000111=-712/13/20226原碼反碼補碼+70000011100000111000001
2.1C的數(shù)據(jù)類型C語言提供了以下一些數(shù)據(jù)類型。
數(shù)據(jù)類型構(gòu)造類型指針類型空類型(無值類型)void枚舉類型enum數(shù)組類型結(jié)構(gòu)類型struct聯(lián)合類型union基本類型整型int字符型char實型(浮點型)單精度實型float雙精度實型double數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù);2.數(shù)據(jù)取值范圍;3.其上可進行的操作12/13/202272.1C的數(shù)據(jù)類型C語言提供了以下一些數(shù)據(jù)類型。
2.2常量與變量2.2.1常量和符號常量在程序運行過程中,其值不能被改變的量稱為常量常量區(qū)分為不同的類型:整型100,125,-100,0實型3.14,0.125,-3.789字符型‘a(chǎn)’,‘b’,‘2’字符串〝a〞,〝ab〞,〝1232〞直接常量12/13/202282.2常量與變量2.2.1常量和符號常量整型10例2.1符號常量的使用
#definePRICE30
#include<stdio.h>
voidmain()
{
intnum,total;
num=10;
total=num*PRICE;
printf(″total=%d\n″,total);
}符號常量:用一個標識符代表一個常量。符號常量的值在其作用域內(nèi)不能改變,也不能再被賦值。運行結(jié)果:
total=300說明:
程序中用#define命令行定義PRICE代表常量30,此后凡在本文件中出現(xiàn)的PRICE都代表30,可以和常量一樣進行運算說明:如再用賦值語句給PRICE賦值是錯的PRICE=40;/*錯誤,不能給符號常量賦值12/13/20229例2.1符號常量的使用
#definePRICE3
2.2常量與變量2.2.2變量變量代表內(nèi)存中具有特定屬性的一個存儲單元,它用來存放數(shù)據(jù),這就是變量的值,在程序運行期間,這些值是可以改變的。變量名實際上是一個以一個名字對應(yīng)代表一個地址,在對程序編譯連接時由編譯系統(tǒng)給每一個變量名分配對應(yīng)的內(nèi)存地址。從變量中取值,實際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲單元中讀取數(shù)據(jù)。12/13/2022102.2常量與變量2.2.2變量12/12/20221
2.2常量與變量
變量命名的規(guī)定:C語言規(guī)定標識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。
例:sum,_total,month,Student_name,lotus_1_2_3,BASIC,li_lingM.D.John,¥123,3D64,a>b
12/13/2022112.2常量與變量變量命名的規(guī)定:C語言規(guī)定標識符只
2.2常量與變量注意:編譯系統(tǒng)將大寫字母和小寫字母認為是兩個不同的字符。建議變量名的長度最好不要超過8個字符。在選擇變量名和其它標識符時,應(yīng)注意做到“見名知意”,即選有含意的英文單詞(或其縮寫)作標識符。要求對所有用到的變量作強制定義,也就是“先定義,后使用”。12/13/2022122.2常量與變量注意:12/12/202212
2.3整型數(shù)據(jù)2.3.1整型常量的表示方法
整型常量即整常數(shù)。在C語言中,整常數(shù)可用以下三種形式表示:(1)十進制整數(shù)。
如:123,-456,4。(2)八進制整數(shù)。以0開頭的數(shù)是八進制數(shù)。
如:0123表示八進制數(shù)123,等于十進制數(shù)83,-011表示八進制數(shù)-11,即十進制數(shù)-9。12/13/2022132.3整型數(shù)據(jù)2.3.1整型常量的表示方法12/1
2.3整型數(shù)據(jù)(3)十六進制整數(shù)。以0x開頭的數(shù)是16進制數(shù)。
如:0x123,代表16進制數(shù)123,等于十進制數(shù)291。-0x12等于十進制數(shù)-10。
2.3.2整型變量
(1)整型數(shù)據(jù)在內(nèi)存中的存放形式
數(shù)據(jù)在內(nèi)存中是以二進制形式存放的。
如:inti;/*定義為整型變量*/i=10;/*給i賦以整數(shù)10*/
12/13/2022142.3整型數(shù)據(jù)(3)十六進制整數(shù)。以0x開頭的數(shù)是12.3整型數(shù)據(jù)注意:十進制數(shù)10的二進制形式為1010,TurboC2.0和TurboC++3.0為一個整型變量在內(nèi)存中分配2個字節(jié)的存儲單元(不同的編譯系統(tǒng)為整型數(shù)據(jù)分配的字節(jié)數(shù)是不相同的,VC++6.0則分配4個字節(jié))。數(shù)值是以補碼(complement)表示的。
12/13/2022152.3整型數(shù)據(jù)注意:12/12/2022152.3整型數(shù)據(jù)(2)整型變量的分類共六種有符號基本整型有符號短整型有符號長整型無符號基本整型無符號短整型無符號長整型(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int)
注意:括號表示其中的內(nèi)容是可選的.12/13/2022162.3整型數(shù)據(jù)(2)整型變量的分類共六種有符號基本整
2.3整型數(shù)據(jù)整數(shù)類型的有關(guān)數(shù)據(jù):類型類型說明符長度數(shù)的范圍基本型int2字節(jié)-32768~32767短整型short2字節(jié)-215~215-1長整型long4字節(jié)-231~231-1無符號整型unsigned2字節(jié)0~65535無符號短整型unsignedshort2字節(jié)0~65535無符號長整型unsignedlong4字節(jié)0~(232-1)12/13/2022172.3整型數(shù)據(jù)整數(shù)類型的有關(guān)數(shù)據(jù):類
2.3整型數(shù)據(jù)例如:整數(shù)13在內(nèi)存中實際存放的情況:12/13/2022182.3整型數(shù)據(jù)例如:整數(shù)13在內(nèi)存中實際存放的情況:
2.3整型數(shù)據(jù)(3)整型變量的定義:C規(guī)定在程序中所有用到的變量都必須在程序中定義,即“強制類型定義”。
例如:
inta,b(指定變量a、b為整型)
unsignedshortc,d;(指定變量c、d為無符號短整型)
longe,f;(指定變量e、f為長整型)12/13/2022192.3整型數(shù)據(jù)(3)整型變量的定義:12/12/20例2.2整型變量的定義與使用
#include<stdio.h>
voidmain()
{inta,b,c,d;/*指定a、b、c、d為整型變量*/
unsignedu;/*指定u為無符號整型變量*/
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf(″a+u=%d,b+u=%d\n″,c,d);
}說明:
可以看到不同種類的整型數(shù)據(jù)可以進行算術(shù)運算運行結(jié)果:
a+u=22,b+u=-14
12/13/202220例2.2整型變量的定義與使用
#include<stdi例2.3整型數(shù)據(jù)的溢出
#include<stdio.h>
voidmain()
{inta,b;
a=32767;
b=a+1;
printf(“%d,%d\n”,a,b);
}
說明:數(shù)值是以補碼表示的。一個整型變量只能容納-32768~32767范圍內(nèi)的數(shù),無法表示大于32767或小于-32768的數(shù)。遇此情況就發(fā)生“溢出”。運行結(jié)果:
32767,-3276812/13/202221例2.3整型數(shù)據(jù)的溢出
#include<stdio.h在C中,用高位置1來表示負數(shù),int型占兩個字節(jié)共16位,32768的二進制是10000000,00000000,高位為1,系統(tǒng)會認為是負數(shù),所以32768需要用長型表示,占四個字節(jié)。最高位就不是1了。(00000000,00000000,10000000,00000000)
-32768在內(nèi)存中的表示是10000000,00000000。過程是:先讀入正值32768(10000000,00000000),再取反(01111111,11111111),再加1(10000000,00000000)
12/13/202222在C中,用高位置1來表示負數(shù),int型占兩個字節(jié)12/13/20222312/12/20222312/13/20222412/12/202224
2.3整型數(shù)據(jù)2.3.3整型常量的類型(1)一個整數(shù),如果其值在-32768~+32767范圍內(nèi),認為它是int型,它可以賦值給int型和longint型變量。(2)一個整數(shù),如果其值超過了上述范圍,而在-2147483637~+2147483647范圍內(nèi),則認為它是為長整型。可以將它賦值給一個longint型變量。12/13/2022252.3整型數(shù)據(jù)2.3.3整型常量的類型12/12
2.3整型數(shù)據(jù)(3)如果所用的C版本(如TurboC)分配給shortint與int型數(shù)據(jù)在內(nèi)存中占據(jù)的長度相同,則它的表數(shù)范圍與int型相同。因此一個int型的常量同時也是一個shortint型常量,可以賦給int型或shortint型變量。
12/13/2022262.3整型數(shù)據(jù)(3)如果所用的C版本(如Turbo
2.3整型數(shù)據(jù)(4)一個整常量后面加一個字母u或U,認為是unsignedint型,如12345u,在內(nèi)存中按unsignedint規(guī)定的方式存放(存儲單元中最高位不作為符號位,而用來存儲數(shù)據(jù))。如果寫成-12345u,則先將-12345轉(zhuǎn)換成其補碼53191,然后按無符號數(shù)存儲。12/13/2022272.3整型數(shù)據(jù)(4)一個整常量后面加一個字母u或UUnsignedint占2個字節(jié)(16位)。12345→二進制-12345→二進制(補碼)原:補:Unsigned:=5319112/13/202228Unsignedint占2個字節(jié)(16位)。-12345
2.3整型數(shù)據(jù)(5)在一個整常量后面加一個字母l或L,則認為是longint型常量。
例如:123l.432L.0L用于函數(shù)調(diào)用中。如果函數(shù)的形參為longint型,則要求實參也為longint型。12/13/2022292.3整型數(shù)據(jù)(5)在一個整常量后面加一個字母l或
2.4浮點型數(shù)據(jù)2.4.1浮點型常量的表示方法兩種表示形式小數(shù)指數(shù)0.1233e-3注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e
12/13/2022302.4浮點型數(shù)據(jù)2.4.1浮點型常量的表示方法兩種表小
2.4浮點型數(shù)據(jù)規(guī)范化的指數(shù)形式:
在字母e(或E)之前的小數(shù)部分中,小數(shù)點左邊應(yīng)有一位(且只能有一位)非零的數(shù)字.例如:123.456可以表示為:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e其中的1.23456e2稱為“規(guī)范化的指數(shù)形式”。12/13/2022312.4浮點型數(shù)據(jù)規(guī)范化的指數(shù)形式:12/12/2022
2.4浮點型數(shù)據(jù)2.4.2浮點型變量(1)浮點型數(shù)據(jù)在內(nèi)存中的存放形式
一個浮點型數(shù)據(jù)一般在內(nèi)存中占4個字節(jié)(32位)。與整型數(shù)據(jù)的存儲方式不同,浮點型數(shù)據(jù)是按照指數(shù)形式存儲的。系統(tǒng)把一個浮點型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。12/13/2022322.4浮點型數(shù)據(jù)2.4.2浮點型變量12/12/20類型位數(shù)數(shù)的范圍有效數(shù)字float3210-37~10386~7位double型6410-307~1030815~16位longdouble12810-4931~10493218~19位
2.4浮點型數(shù)據(jù)(2)浮點型變量的分類浮點型變量分為單精度(float型)、雙精度(double型)和長雙精度型(longdouble)三類形式。12/13/202233類型位數(shù)數(shù)的范圍例2.4浮點型數(shù)據(jù)的舍入誤差
#include<stdio.h>
voidmain()
{
floata,b;
a=123456.789e5;
b=a+20;
printf(“%f\n”,b);
}
說明:一個浮點型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無意義的,并不準確地表示該數(shù)。應(yīng)當(dāng)避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,否則就會“丟失”小的數(shù)運行結(jié)果:
123456.789e512/13/202234例2.4浮點型數(shù)據(jù)的舍入誤差
#include<stdi
2.4浮點型數(shù)據(jù)2.4.3浮點型常量的類型
C編譯系統(tǒng)將浮點型常量作為雙精度來處理。
例如:f=2.45678*4523.65
系統(tǒng)先把2.45678和4523.65作為雙精度數(shù),然后進行相乘的運算,得到的乘也是一個雙精度數(shù)。最后取其前7位賦給浮點型變量f。如是在數(shù)的后面加字母f或F(如1.65f,654.87F),這樣編譯系統(tǒng)就會把它們按單精度(32位)處理。12/13/2022352.4浮點型數(shù)據(jù)2.4.3浮點型常量的類型12/12
2.5字符型數(shù)據(jù)
2.5.1字符常量(1)用單引號包含的一個字符是字符型常量(2)只能包含一個字符例‘a(chǎn)’,’A’,‘1’‘a(chǎn)bc’、“a”12/13/2022362.5字符型數(shù)據(jù)2.5.1字符常量例‘a(chǎn)’,’A’
2.5字符型數(shù)據(jù)
有些以“\”開頭的特殊字符稱為轉(zhuǎn)義字符\n換行\(zhòng)t橫向跳格\r回車\\反斜杠\dddddd表示1到3位八進制數(shù)字\xhhhh表示1到2位十六進制數(shù)字12/13/2022372.5字符型數(shù)據(jù)有些以“\”開頭的特殊字符稱為轉(zhuǎn)義例2.5轉(zhuǎn)義字符的使用
打印機上的顯示結(jié)果:
fabcgdehjik12/13/202238例2.5轉(zhuǎn)義字符的使用
打印機上的顯示結(jié)果:12/12/2
2.5字符型數(shù)據(jù)
2.5.2字符變量字符型變量用來存放字符常量,注意只能放一個字符。字符變量的定義形式如下:charc1,c2;在本函數(shù)中可以用下面語句對c1,c2賦值:c1=‘a(chǎn)’;c2=‘b’;一個字符變量在內(nèi)存中占一個字節(jié)。
12/13/2022392.5字符型數(shù)據(jù)2.5.2字符變量12/12/202
2.5字符型數(shù)據(jù)
2.5.3字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法一個字符常量存放到一個字符變量中,實際上并不是把該字符的字型放到內(nèi)存中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。注意:
一個字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。12/13/2022402.5字符型數(shù)據(jù)2.5.3字符數(shù)據(jù)在內(nèi)存中的存儲形例2.6向字符變量賦以整數(shù)。
#include<stdio.h>
voidmain()
{charc1,c2;
c1=97;
c2=98;
printf(“%c%c\n”,c1,c2);
printf(“%d%d\n”,c1,c2);
}
說明:在第3和第4行中,將整數(shù)97和98分別賦給c1和c2,它的作用相當(dāng)于以下兩個賦值語句: c1=′a′;c2=′b′;因為’a’和’b’的ASCII碼為97和98運行結(jié)果:ab979812/13/202241例2.6向字符變量賦以整數(shù)。
#include<std例2.7大小寫字母的轉(zhuǎn)換
#include<stdio.h>
voidmain()
{charc1,c2;
c1=’a’;
c2=’b’;
c1=c1-32;
c2=c2-32;
printf(“%c%c″,c1,c2);
}說明:程序的作用是將兩個小寫字母a和b轉(zhuǎn)換成大寫字母A和B。從ASCII代碼表中可以看到每一個小寫字母比它相應(yīng)的大寫字母的ASCII碼大32。C語言允許字符數(shù)據(jù)與整數(shù)直接進行算術(shù)運算。運行結(jié)果:AB
12/13/202242例2.7大小寫字母的轉(zhuǎn)換
#include<stdi2.5字符型數(shù)據(jù)說明:有些系統(tǒng)(如TurboC)將字符變量定義為signedchar型。其存儲單元中的最高位作為符號位,它的取值范圍是-128~127。如果在字符變量中存放一個ASCII碼為0~127間的字符,由于字節(jié)中最高位為0,因此用%d輸出字符變量時,輸出的是一個正整數(shù)。如果在字符變量中存放一個ASCII碼為128~255間的字符,由于在字節(jié)中最高位為1,用%d格式符輸出時,就會得到一個負整數(shù)。
12/13/2022432.5字符型數(shù)據(jù)說明:12/12/202243
2.5字符型數(shù)據(jù)2.5.4字符串常量字符串常量是一對雙撇號括起來的字符序列.合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以輸出一個字符串,如printf(“Howdoyoudo.”);12/13/2022442.5字符型數(shù)據(jù)2.5.4字符串常量12/12/202
2.5字符型數(shù)據(jù)‘a’是字符常量,”a”是字符串常量,二者不同。
如:假設(shè)C被指定為字符變量
:charcc=’a’;c=”a”;c=”CHINA”;
結(jié)論:不能把一個字符串常量賦給一個字符變量。12/13/2022452.5字符型數(shù)據(jù)‘a’是字符常量,”a”是字符串常量C規(guī)定:在每一個字符串常量的結(jié)尾加一個“字符串結(jié)束標志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。C規(guī)定以字符’\0’作為字符串結(jié)束標志。
如:如果有一個字符串常量”CHINA”,實際上在內(nèi)存中是:CHINA\0
它占內(nèi)存單元不是5個字符,而是6個字符,最后一個字符為’\0’。但在輸出時不輸出’\0’。
2.5字符型數(shù)據(jù)12/13/202246C規(guī)定:在每一個字符串常量的結(jié)尾加一個“字符如:如果有一
2.6變量賦初值
字符串常量(1)C語言允許在定義變量的同時使變量初始化如:inta=3;//指定a為整型變量,初值為3floatf=3.56;//指定f為浮點型變量,初值為3.56charc=‘a(chǎn)’;//指定c為字符變量,初值為‘a(chǎn)’12/13/2022472.6變量賦初值字符串常量12/12/202247
2.6變量賦初值
(2)可以使被定義的變量的一部分賦初值。
如:
inta,b,c=5;表示指定a、b、c為整型變量,但只對c初始化,c的初值為5(3)如果對幾個變量賦以同一個初值,應(yīng)寫成:inta=3,b=3,c=3;表示a、b、c的初值都是3。不能寫成∶inta=b=c=3;
注意:初始化不是在編譯階段完成的而是在程序運行時執(zhí)行本函數(shù)時賦初值的,相當(dāng)于有一個賦值語句。12/13/2022482.6變量賦初值(2)可以使被定義的變量的一部分賦初
2.7各類數(shù)值型數(shù)據(jù)間的混合運算
混合運算:整型(包括int,short,long)、浮點型(包括float,double)可以混合運算。在進行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進行運算.說明:這種類型轉(zhuǎn)換是由系統(tǒng)自動進行的。12/13/2022492.7各類數(shù)值型數(shù)據(jù)間的混合運算混合運算:整型(包括
2.8算術(shù)運算符和算術(shù)表達式2.8.1C運算符簡介
C的運算符有以下幾類:(1)算術(shù)運算符(+-*/%)(2)關(guān)系運算符(><==>=<=?。剑?3)邏輯運算符(?。Γ|)(4)位運算符(<<>>~|∧&)(5)賦值運算符(=及其擴展賦值運算符)(6)條件運算符(?:)(7)逗號運算符(,)(8)指針運算符(*和&)(9)求字節(jié)數(shù)運算符(sizeof)(10)強制類型轉(zhuǎn)換運算符((類型))(11)分量運算符(.->)(12)下標運算符([])(13)其他(如函數(shù)調(diào)用運算符())12/13/2022502.8算術(shù)運算符和算術(shù)表達式2.8.1C運算符簡介(
2.8算術(shù)運算符和算術(shù)表達式2.8.2算術(shù)運算符和算術(shù)表達式
(1)基本的算術(shù)運算符:+(加法運算符,或正值運算符。如:3+5、+3)-(減法運算符,或負值運算符。如:5-2、-3)*(乘法運算符。如:3*5)/(除法運算符。如:5/3)%(模運算符,或稱求余運算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3)。12/13/2022512.8算術(shù)運算符和算術(shù)表達式2.8.2算術(shù)運算符和算
2.8算術(shù)運算符和算術(shù)表達式(2)算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性基本的算術(shù)運算符:
用算術(shù)運算符和括號將運算對象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子,稱為C算術(shù)表達式。運算對象包括常量、變量、函數(shù)等。
例如:a*b/c-1.5+′a′是一個合法的表達式12/13/2022522.8算術(shù)運算符和算術(shù)表達式(2)算術(shù)表達式和運算符C語言規(guī)定了運算符的優(yōu)先級和結(jié)合性。在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行,例如先乘除后加減。
C規(guī)定了各種運算符的結(jié)合方向(結(jié)合性)算術(shù)運算符的結(jié)合方向為“自左至右”,即先左后右。
2.8算術(shù)運算符和算術(shù)表達式12/13/2022532.8算術(shù)運算符和算術(shù)表達式12/12/202253
2.8算術(shù)運算符和算術(shù)表達式(3)強制類型轉(zhuǎn)換運算符
可以利用強制類型轉(zhuǎn)換運算符將一個表達式轉(zhuǎn)換成所需類型。
一般形式:(類型名)(表達式)例如:(double)a將a轉(zhuǎn)換成double類型(int)(x+y)將x+y的值轉(zhuǎn)換成整型(float)(5%3)將5%3的值轉(zhuǎn)換成float型12/13/2022542.8算術(shù)運算符和算術(shù)表達式(3)強制類型轉(zhuǎn)換運算符1例2.8強制類型轉(zhuǎn)換。
#include<stdio.h>
voidmain()
{floatx;
inti;
x=3.6;
i=(int)x;
printf("x=%f,i=%d\n",x,i);
}
說明:有兩種類型轉(zhuǎn)換,一種是在運算時不必用戶指定,系統(tǒng)自動進行的類型轉(zhuǎn)換,如3+6.5。第二種是強制類型轉(zhuǎn)換。當(dāng)自動類型轉(zhuǎn)換不能實現(xiàn)目的時,可以用強制類型轉(zhuǎn)換。運行結(jié)果:
x=3.600000,i=312/13/202255例2.8強制類型轉(zhuǎn)換。
#include<stdio.
2.8算術(shù)運算符和算術(shù)表達式(4)
自增、自減運算符
作用是使變量的值增1或減1如:++i,--i(在使用i之前,先使i的值加(減)1)i++,i--(在使用i之后,使i的值加(減)1)
12/13/2022562.8算術(shù)運算符和算術(shù)表達式(4)自增、自減運算符1
2.8算術(shù)運算符和算術(shù)表達式i++與++i的區(qū)別:
++i是先執(zhí)行i=i+1后,再使用i的值;i++是先使用i的值后,再執(zhí)行i=i+1。例如:①j=++i;i的值先變成4,再賦給j,j的值均為4②j=i++;先將i的值3賦給j,j的值為3,然后i變?yōu)椋?2/13/2022572.8算術(shù)運算符和算術(shù)表達式i++與++i的區(qū)別:12
2.8算術(shù)運算符和算術(shù)表達式注意:
(1)自增運算符(++),自減運算符(--),只能用于變量,而不能用于常量或表達式,(2)++和--的結(jié)合方向是“自右至左”。
自增(減)運算符常用于循環(huán)語句中使循環(huán)變量自動加1。也用于指針變量,使指針指向下一個地址
12/13/2022582.8算術(shù)運算符和算術(shù)表達式注意:自增(減)運
2.8算術(shù)運算符和算術(shù)表達式(5)有關(guān)表達式使用中的問題說明
①ANSIC并沒有具體規(guī)定表達式中的子表達式的求值順序,允許各編譯系統(tǒng)自己安排。例如:對表達式a=f1()+f2()并不是所有的編譯系統(tǒng)都先調(diào)用f1(),然后調(diào)用f2()。在有的情況下結(jié)果可能不同。有時會出現(xiàn)一些令人容易搞混的問題,因此務(wù)必要小心謹慎。
12/13/2022592.8算術(shù)運算符和算術(shù)表達式(5)有關(guān)表達式使用中的
2.8算術(shù)運算符和算術(shù)表達式②C語言中有的運算符為一個字符,有的運算符由兩個字符組成,為避免誤解,最好采取大家都能理解的寫法。例如:不要寫成i+++j的形式,而應(yīng)寫成(i++)+j的形式
12/13/2022602.8算術(shù)運算符和算術(shù)表達式②C語言中有的運算符為一個
2.8算術(shù)運算符和算術(shù)表達式③在調(diào)用函數(shù)時,實參數(shù)的求值順序,C標準并無統(tǒng)一規(guī)定。例如:i的初值為3,如果有下面的函數(shù)調(diào)用:printf(″%d,%d″,i,i++)在有的系統(tǒng)中,從左至右求值,輸出“3,3”。在多數(shù)系統(tǒng)中對函數(shù)參數(shù)的求值順序是自右而左,printf函數(shù)輸出的是“4,3”。以上這種寫法不宜提倡,最好改寫成j=i++;printf("%d,%d",j,i)不要寫出別人看不懂的也不知道系統(tǒng)會怎樣執(zhí)行程序12/13/2022612.8算術(shù)運算符和算術(shù)表達式③在調(diào)用函數(shù)時,實參數(shù)的求
2.9賦值運算符和賦值表達式
(1)賦值運算符
賦值符號“=”就是賦值運算符,它的作用是將一個數(shù)據(jù)賦給一個變量。如“a=3”的作用是執(zhí)行一次賦值操作(或稱賦值運算)。把常量3賦給變量a。也可以將一個表達式的值賦給一個變量.
12/13/2022622.9賦值運算符和賦值表達式(1)賦值運算符12/1
2.9賦值運算符和賦值表達式
(2)類型轉(zhuǎn)換
如果賦值運算符兩側(cè)的類型不一致,但都是數(shù)值型或字符型時,在賦值時要進行類型轉(zhuǎn)換。①將浮點型數(shù)據(jù)(包括單、雙精度)賦給整型變量時,舍棄浮點數(shù)的小數(shù)部分。如:i為整型變量,執(zhí)行“i=3.56”的結(jié)果是使i的值為3,以整數(shù)形式存儲在整型變量中.12/13/2022632.9賦值運算符和賦值表達式(2)類型轉(zhuǎn)換12/1
2.9賦值運算符和賦值表達式
②將整型數(shù)據(jù)賦給單、雙精度變量時,數(shù)值不變,但以浮點數(shù)形式存儲到變量中
如:
將23賦給float變量f,即執(zhí)行f=23,先將23轉(zhuǎn)換成23.00000,再存儲在f中。將23賦給double型變量d,即執(zhí)行d=23,系統(tǒng)將23補足有效位數(shù)字為23.00000000000000,然后以雙精度浮點數(shù)形式存儲到變量d中。
12/13/2022642.9賦值運算符和賦值表達式②將整型數(shù)據(jù)賦給單、
2.9賦值運算符和賦值表達式
③將一個double型數(shù)據(jù)賦給float變量時,截取其前面7位有效數(shù)字,存放到float變量的存儲單元(4個字節(jié))中。但應(yīng)注意數(shù)值范圍不能溢出。
如:floatf;doubled=123.456789e100;f=d;就出現(xiàn)溢出的錯誤。
如果將一個float型數(shù)據(jù)賦給double變量時,數(shù)值不變,有效位數(shù)擴展到16位,在內(nèi)存中以8個字節(jié)存儲12/13/2022652.9賦值運算符和賦值表達式③將一個double型數(shù)
2.9賦值運算符和賦值表達式
④字符型數(shù)據(jù)賦給整型變量時,由于字符只占1個字節(jié),而整型變量為2個字節(jié),因此將字符數(shù)據(jù)(8個二進位)放到整型變量存儲單元的低8位中。12/13/2022662.9賦值運算符和賦值表達式④字符型數(shù)據(jù)賦給整型變量第一種情況:低位對應(yīng)、高位補零若所用系統(tǒng)將字符處理為無符號字符類型,或程序已將字符變量定義為unsignedchar型,則將字符的8位放到整型變量低8位,高8位補零。例如:將字符‘\376’賦給int型變量i第二種情況:符號擴展
若所用系統(tǒng)(如TurboC++)將字符處理為帶符號(signedchar)時,若字符最高位為0,則整型變量高8位補0;若字符最高位為1,則高8位全補1。這稱為“符號擴展”,這樣做的目的是使數(shù)值保持不變,如變量c(字符‘\376’)以整數(shù)形式輸出為-2,i的值也是-2。12/13/202267第一種情況:低位對應(yīng)、高位補零第二種情況:符號擴展12/12
2.9賦值運算符和賦值表達式
⑤將一個int、short、long型數(shù)據(jù)賦給一個char型變量時,只將其低8位原封不動地送到char型變量(即截斷)。例如:inti=289;charc=′a′;c=i;c的值為33,如果用“%c”輸出c,將得到字符“!”!的ASCII碼為33。
賦值情況:12/13/2022682.9賦值運算符和賦值表達式⑤將一個int、shor
2.9賦值運算符和賦值表達式
將帶符號的整型數(shù)據(jù)(int型)賦給long型變量時,要進行符號擴展,將整型數(shù)的16位送到long型低16位中:如果int型數(shù)據(jù)為正值(符號位為0),則long型變量的高16位補0;如果int型變量為負值(符號位為1),則long型變量的高16位補1,以保持數(shù)值不改變。反之,若將一個long型數(shù)據(jù)賦給一個int型變量,只將long型數(shù)據(jù)中低16位原封不動地送到整型變量(即截斷)。12/13/2022692.9賦值運算符和賦值表達式將帶符號的整型數(shù)據(jù)(
2.9賦值運算符和賦值表達式
例如:inta;longb=8;a=b
賦值如:如果b=65536,則賦值后a值為0。12/13/2022702.9賦值運算符和賦值表達式例如:inta;lon
2.9賦值運算符和賦值表達式
⑦將unsignedint型數(shù)據(jù)賦給longint型變量時,不存在符號擴展問題,只需將高位補0即可。將一個unsigned類型數(shù)據(jù)賦給一個占字節(jié)數(shù)相同的非unsigned型整型變量(例如:unsignedint->int,unsignedlong->long,unsignedshort->short),將unsigned型變量的內(nèi)容原樣送到非unsigned型變量中,但如果數(shù)據(jù)范圍超過相應(yīng)整型的范圍,則會出現(xiàn)數(shù)據(jù)錯誤。12/13/2022712.9賦值運算符和賦值表達式⑦將unsignedi
2.9賦值運算符和賦值表達式
例如:unsignedinta=65535;intb;b=a;將a整個送到b中,由于b是int,第1位是符號位,因此b成了負數(shù)。根據(jù)補碼知識可知,b的值為-1,可以用printf(″%d″,b);來驗證。
⑧將非unsigned型數(shù)據(jù)賦給長度相同的unsigned型變量,也是原樣照賦(符號位也作為數(shù)值一起傳送)。12/13/2022722.9賦值運算符和賦值表達式例如:unsigned例2.9有符號數(shù)據(jù)傳送給無符號變量。
#include<stdio.h>
voidmain()
{unsigneda;
intb=-1;
a=b;
print(″%u\n″,a);
}
說明:“%u”是輸出無符號數(shù)時所用的格式符。如果b為正值,且在0~32767之間,則賦值后數(shù)值不變。運行結(jié)果:65535
12/13/202273例2.9有符號數(shù)據(jù)傳送給無符號變量。
#include
2.9賦值運算符和賦值表達式
(3)復(fù)合的賦值運算符
在賦值符“=”之前加上其他運算符,可以構(gòu)成復(fù)合的運算符。例如:a+=3等價于a=a+3x*=y+8等價于x=x*(y+8)x%=3等價于x=x%312/13/2022742.9賦值運算符和賦值表達式(3)復(fù)合的賦值運算
2.9賦值運算符和賦值表達式
為便于記憶,可以這樣理解:①a+=b(其中a為變量,b為表達式)②a+=b(將有下劃線的“a+”移到“=”右側(cè))|___↑③a=a+b(在“=”左側(cè)補上變量名a)注意:如果b是包含若干項的表達式,則相當(dāng)于它有括號。如:
①x%=y+3
②x%=(y+3)|__↑
③x=x%(y+3)(不要錯寫成x=x%y+3)
凡是二元(二目)運算符,都可以與賦值符一起組合成復(fù)合賦值符。C語言規(guī)定可以使用10種復(fù)合賦值運算符:+=,-=,*=,/=,%=,<<=,>>=,&=,∧=,|=
12/13/2022752.9賦值運算符和賦值表達式為便于記憶,可以這樣理解
2.9賦值運算符和賦值表達式
(4)賦值表達式
由賦值運算符將一個變量和一個表達式連接起來的式子稱為“賦值表達式”。一般形式為:
<變量><賦值運算符><表達式>
例如:“a=5”是一個賦值表達式
12/13/2022762.9賦值運算符和賦值表達式(4)賦值表達式12/
2.9賦值運算符和賦值表達式
對賦值表達式求解的過程是:
①求賦值運算符右側(cè)的“表達式”的值;②賦給賦值運算符左側(cè)的變量。例如:賦值表達式“a=3*5”的值為15,執(zhí)行表達式后,變量a的值也是15。
注意:一個表達式應(yīng)該有一個值
12/13/2022772.9賦值運算符和賦值表達式對賦值表達式求解的過程是
2.9賦值運算符和賦值表達式
左值(lvalue)
:賦值運算符左側(cè)的標識符變量可以作為左值;而表達式就不能作為左值(如a+b);賦值表達式可以;常變量也不能作為左值,
右值(lvalue)
:出現(xiàn)在賦值運算符右側(cè)的表達式
左值也可以出現(xiàn)在賦值運算符右側(cè),因而左值都可以作為右值。12/13/2022782.9賦值運算符和賦值表達式左值(lvalue)
2.9賦值運算符和賦值表達式
賦值表達式中的“表達式”,又可以是一個賦值表達式。例如:a=(b=5)
分析:括弧內(nèi)的“b=5”是一個賦值表達式,它的值等于5。執(zhí)行表達式“a=(b=5)”相當(dāng)于執(zhí)行“b=5”和“a=b”兩個賦值表達式。賦值運算符按照“自右而左”的結(jié)合順序,因此,“(b=5)”外面的括弧可以不要,即“a=(b=5)”和“a=b=5”等價。12/13/2022792.9賦值運算符和賦值表達式賦值表達式中的“表達式
2.9賦值運算符和賦值表達式
請分析下面的賦值表達式∶(a=3*5)=4*3分析:先執(zhí)行括弧內(nèi)的運算,將15賦給a,然后執(zhí)行4*3的運算,得12,再把12賦給a。最后a的值為12,整個表達式的值為12。可以看到∶(a=3*5)出現(xiàn)在賦值運算符的左側(cè),因此賦值表達式(a=3*5)是左值注意:在對賦值表達式(a=3*5)求解后,變量a得到值15執(zhí)行(a=3*5)=4*3時,實際上是將4*3的積12賦給變量a,而不是賦給3*5。不能寫成:a=3*5=4*312/13/2022802.9賦值運算符和賦值表達式請分析下面的賦值表達式∶
2.9賦值運算符和賦值表達式
賦值表達式也可以包含復(fù)合的賦值運算符。
如:a+=a-=a*a;a初值為12分析:此賦值表達式的求解步驟如下∶①先進行“a-=a*a”的運算,它相當(dāng)于a=a-a*a,a的值為12-144=-132。②再進行“a+=-132”的運算,相當(dāng)于a=a+(-132),a的值為-132-132=-264。12/13/2022812.9賦值運算符和賦值表達式賦值表達式也可以包含復(fù)合
2.9賦值運算符和賦值表達式
將賦值表達式作為表達式的一種,使賦值操作不僅可以出現(xiàn)在賦值語句中,而且可以以表達式形式出現(xiàn)在其他語句(如輸出語句、循環(huán)語句等)中。如:printf("%d",a=b);
分析:如果b的值為3,則輸出a的值(也是表達式a=b的值)為3。在一個語句中完成了賦值和輸出雙重功能。12/13/2022822.9賦值運算符和賦值表達式將賦值表
2.10逗號運算符和逗號表達式逗號運算符:將兩個表達式連接起來,又稱為“順序求值運算符”
如:3+5,6+8
一般形式:
表達式1,表達式2求解過程:先求解表達式1,再求解表達式2。整個逗號表達式的值是表達式2的值。
逗號表達式的值為1412/13/2022832.10逗號運算符和逗號表達式逗號運算符:將兩個表達式
2.10逗號運算符和逗號表達式例:逗號表達式a=3*5,a*4
分析:賦值運算符的優(yōu)先級別高于逗號運算符,因此應(yīng)先求解a=3*5。a的值為15,然后求解a*4,得60。整個逗號表達式的值為60。
一個逗號表達式又可以與另一個表達式組成一個新的逗號表達式如:(a=3*5,a*4),a+5先計算出a的值等于15,再進行a*4的運算得60(但a值未變,仍為15),再進行a+5得20,即整個表達式的值為20。12/13/2022842.10逗號運算符和逗號表達式例:逗號表達式a=3*5
2.10逗號運算符和逗號表達式逗號表達式的一般形式可以擴展為
表達式1,表達式2,表達式3,……,表達式n它的值為表達式n的值。逗號運算符是所有運算符中級別最低的例:①x=(a=3,6*3)②x=a=3,6*3賦值表達式,將一個逗號表達式的值賦給x,x的值等于18
逗號表達式,包括一個賦值表達式和一個算術(shù)表達式,x的值為3,整個逗號表達式的值為18。12/13/2022852.10逗號運算符和逗號表達式逗號表達式的一般形式可以
2.10逗號運算符和逗號表達式注意:并不是任何地方出現(xiàn)的逗號都是作為逗號運算符。例如函數(shù)參數(shù)也是用逗號來間隔的。如:printf(“%d,%d,%d”,a,b,c);“a,b,c”并不是一個逗號表達式,它是printf函數(shù)的3個參數(shù)printf(“%d,%d,%d”,(a,b,c),b,c);
“(a,b,c)”是一個逗號表達式,它的值等于c的值。12/13/2022862.10逗號運算符和逗號表達式注意:并不是任何地方出現(xiàn)
2.11關(guān)系運算符和關(guān)系表達式1.關(guān)系運算符及其優(yōu)先次序<(小于)<=(小于或等于)>(大于)>=(大于或等于)==(等于)!=(不等于)優(yōu)先級相同(高)優(yōu)先級相同(低)說明:關(guān)系運算符的優(yōu)先級低于算術(shù)運算符關(guān)系運算符的優(yōu)先級高于賦值運算符12/13/2022872.11關(guān)系運算符和關(guān)系表達式1.關(guān)系運算符及其優(yōu)先次
2.11關(guān)系運算符和關(guān)系表達式2.關(guān)系表達式用關(guān)系運算符將兩個表達式(可以是算術(shù)表達式或關(guān)系表達式,邏輯表達式,賦值表達式,字符表達式)接起來的式子,稱關(guān)系表達式例:a>b,a+b>b+c,(a=3)>(b=5),’a’<‘b’,(a>b)>(b<c)關(guān)系表達式的值是一個邏輯值,即“真”或“假”。例:關(guān)系表達式”a>b”的值為“真”,表達式的值為1。C語言中沒有專用的邏輯值,1代表真,0代表假12/13/2022882.11關(guān)系運算符和關(guān)系表達式2.關(guān)系表達式C語言中
2.12邏輯運算符和邏輯表達式1.邏輯運算符及其優(yōu)先次序(1)&&(邏輯與)相當(dāng)于其他語言中的AND(2)||(邏輯或)相當(dāng)于其他語言中的OR(3)!(邏輯非)相當(dāng)于其他語言中的NOT例:a&&b若a,b為真,則a&&b為真。a||b若a,b之一為真,則a||b為真。!a若a為真,則!a為假。優(yōu)先次序:!(非)->&&()->||()邏輯運算符中的“&&”和“||”低于關(guān)系運算符,“!”高于算術(shù)運算符12/13/2022892.12邏輯運算符和邏輯表達式1.邏輯運算符及其優(yōu)先次
2.12邏輯運算符和邏輯表達式2.邏輯表達式用邏輯運算符將關(guān)系表達式或邏輯量連接起來的式子就是邏輯表達式。邏輯表達式的值應(yīng)該是一個邏輯量“真”或“假”。例:設(shè)a=4,b=5:!a的值為0a&&b的值為1a||b的值為1!a||b的值為14&&0||2的值為1邏輯運算結(jié)果:1代表真,0代表假運算對象:任何非零的數(shù)值被認作“真”12/13/2022902.12邏輯運算符和邏輯表達式2.邏輯表達式例:設(shè)a2.12邏輯運算符和邏輯表達式例:5>3&&8<4-!0
自左向右運算
1&&0邏輯值為08<3邏輯值為04-1值為3!0邏輯值為15>3邏輯值為1表達式值為012/13/2022912.12邏輯運算符和邏輯表達式例:5>3&&8<4-2.12邏輯運算符和邏輯表達式在邏輯表達式的求解中,并不是所有的邏輯運算符都要被執(zhí)行。(1)a&&b&&c只有a為真時,才需要判斷b的值,只有a和b都為真時,才需要判斷c的值。(2)a||b||c只要a為真,就不必判斷b和c的值,只有a為假,才判斷b。a和b都為假才判斷c例:(m=a>b)&&(n=c>d)當(dāng)a=1,b=2,c=3,d=4,m和n的原值為1時,由于“a>b”的值為0,因此m=0,而“n=c>d”不被執(zhí)行,因此n的值不是0而仍保持原值1。12/13/2022922.12邏輯運算符和邏輯表達式在邏輯表達式的求解中,2.12邏輯運算符和邏輯表達式用邏輯表達式來表示閏年的條件能被4整除,但不能被100整除。能被4整除,又能被400整除。?答
(year%4==0&&year%100!=0)||year%400==0案
值為真(1)是閏年,否則為非閏年。12/13/2022932.12邏輯運算符和邏輯表達式用邏演講完畢,謝謝觀看!演講完畢,謝謝觀看!94第二章12/13/202295第二章12/12/20221本章要點數(shù)據(jù)的描述規(guī)則數(shù)據(jù)的操作規(guī)則12/13/202296本章要點數(shù)據(jù)的描述規(guī)則12/12/20222
主要內(nèi)容2.1C的數(shù)據(jù)類型2.2常量與變量2.3整型數(shù)據(jù)2.4浮點型數(shù)據(jù)運行2.5字符型數(shù)據(jù)
12/13/202297主要內(nèi)容2.1C的數(shù)據(jù)類型12/12/20223
主要內(nèi)容2.6變量賦初值
2.7各類數(shù)值型數(shù)據(jù)間的混合運算
2.8算術(shù)運算符和算術(shù)表達式
2.9賦值運算符和賦值表達式
2.10逗號運算符和逗號表達式12/13/202298主要內(nèi)容2.6變量賦初值12/12/20224數(shù)值的表示方法——原碼、反碼和補碼原碼:最高位為符號位,其余各位為數(shù)值本身的絕對值反碼:正數(shù):反碼與原碼相同負數(shù):符號位為1,其余位對原碼取反補碼:正數(shù):原碼、反碼、補碼相同負數(shù):最高位為1,其余位為原碼取反,再對整個數(shù)加112/13/202299數(shù)值的表示方法——原碼、反碼和補碼12/12/20225原碼反碼補碼+7000001110000011100000111-7100001111111100011111001+0000000000000000000000000-0100000001111111100000000數(shù)的范圍01111111~11111111(-127~+127)01111111~10000000(-127~+127)01111111~10000000(-128~+127)(用一字節(jié)表示數(shù))純整數(shù)的補碼最小可以表示到-2^n。這時在[-2^n]中,符號位的1既表示符號“-”,也表示數(shù)值2^n。
若要一個負數(shù)變補碼,其方法是符號位置1,其余各位0變1,1變0,然后在最末位上加1。負數(shù)補碼轉(zhuǎn)換成十進制數(shù):最高位不動,其余位取反加1例補碼:11111001取反:10000110加1:10000111=-712/13/2022100原碼反碼補碼+70000011100000111000001
2.1C的數(shù)據(jù)類型C語言提供了以下一些數(shù)據(jù)類型。
數(shù)據(jù)類型構(gòu)造類型指針類型空類型(無值類型)void枚舉類型enum數(shù)組類型結(jié)構(gòu)類型struct聯(lián)合類型union基本類型整型int字符型char實型(浮點型)單精度實型float雙精度實型double數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù);2.數(shù)據(jù)取值范圍;3.其上可進行的操作12/13/20221012.1C的數(shù)據(jù)類型C語言提供了以下一些數(shù)據(jù)類型。
2.2常量與變量2.2.1常量和符號常量在程序運行過程中,其值不能被改變的量稱為常量常量區(qū)分為不同的類型:整型100,125,-100,0實型3.14,0.125,-3.789字符型‘a(chǎn)’,‘b’,‘2’字符串〝a〞,〝ab〞,〝1232〞直接常量12/13/20221022.2常量與變量2.2.1常量和符號常量整型10例2.1符號常量的使用
#definePRICE30
#include<stdio.h>
voidmain()
{
intnum,total;
num=10;
total=num*PRICE;
printf(″total=%d\n″,total);
}符號常量:用一個標識符代表一個常量。符號常量的值在其作用域內(nèi)不能改變,也不能再被賦值。運行結(jié)果:
total=300說明:
程序中用#define命令行定義PRICE代表常量30,此后凡在本文件中出現(xiàn)的PRICE都代表30,可以和常量一樣進行運算說明:如再用賦值語句給PRICE賦值是錯的PRICE=40;/*錯誤,不能給符號常量賦值12/13/2022103例2.1符號常量的使用
#definePRICE3
2.2常量與變量2.2.2變量變量代表內(nèi)存中具有特定屬性的一個存儲單元,它用來存放數(shù)據(jù),這就是變量的值,在程序運行期間,這些值是可以改變的。變量名實際上是一個以一個名字對應(yīng)代表一個地址,在對程序編譯連接時由編譯系統(tǒng)給每一個變量名分配對應(yīng)的內(nèi)存地址。從變量中取值,實際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲單元中讀取數(shù)據(jù)。12/13/20221042.2常量與變量2.2.2變量12/12/20221
2.2常量與變量
變量命名的規(guī)定:C語言規(guī)定標識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。
例:sum,_total,month,Student_name,lotus_1_2_3,BASIC,li_lingM.D.John,¥123,3D64,a>b
12/13/20221052.2常量與變量變量命名的規(guī)定:C語言規(guī)定標識符只
2.2常量與變量注意:編譯系統(tǒng)將大寫字母和小寫字母認為是兩個不同的字符。建議變量名的長度最好不要超過8個字符。在選擇變量名和其它標識符時,應(yīng)注意做到“見名知意”,即選有含意的英文單詞(或其縮寫)作標識符。要求對所有用到的變量作強制定義,也就是“先定義,后使用”。12/13/20221062.2常量與變量注意:12/12/202212
2.3整型數(shù)據(jù)2.3.1整型常量的表示方法
整型常量即整常數(shù)。在C語言中,整常數(shù)可用以下三種形式表示:(1)十進制整數(shù)。
如:123,-456,4。(2)八進制整數(shù)。以0開頭的數(shù)是八進制數(shù)。
如:0123表示八進制數(shù)123,等于十進制數(shù)83,-011表示八進制數(shù)-11,即十進制數(shù)-9。12/13/20221072.3整型數(shù)據(jù)2.3.1整型常量的表示方法12/1
2.3整型數(shù)據(jù)(3)十六進制整數(shù)。以0x開頭的數(shù)是16進制數(shù)。
如:0x123,代表16進制數(shù)123,等于十進制數(shù)291。-0x12等于十進制數(shù)-10。
2.3.2整型變量
(1)整型數(shù)據(jù)在內(nèi)存中的存放形式
數(shù)據(jù)在內(nèi)存中是以二進制形式存放的。
如:inti;/*定義為整型變量*/i=10;/*給i賦以整數(shù)10*/
12/13/20221082.3整型數(shù)據(jù)(3)十六進制整數(shù)。以0x開頭的數(shù)是12.3整型數(shù)據(jù)注意:十進制數(shù)10的二進制形式為1010,TurboC2.0和TurboC++3.0為一個整型變量在內(nèi)存中分配2個字節(jié)的存儲單元(不同的編譯系統(tǒng)為整型數(shù)據(jù)分配的字節(jié)數(shù)是不相同的,VC++6.0則分配4個字節(jié))。數(shù)值是以補碼(complement)表示的。
12/13/20221092.3整型數(shù)據(jù)注意:12/12/2022152.3整型數(shù)據(jù)(2)整型變量的分類共六種有符號基本整型有符號短整型有符號長整型無符號基本整型無符號短整型無符號長整型(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int)
注意:括號表示其中的內(nèi)容是可選的.12/13/20221102.3整型數(shù)據(jù)(2)整型變量的分類共六種有符號基本整
2.3整型數(shù)據(jù)整數(shù)類型的有關(guān)數(shù)據(jù):類型類型說明符長度數(shù)的范圍基本型int2字節(jié)-32768~32767短整型short2字節(jié)-215~215-1長整型long4字節(jié)-231~231-1無符號整型unsigned2字節(jié)0~65535無符號短整型unsignedshort2字節(jié)0~65535無符號長整型unsignedlong4字節(jié)0~(232-1)12/13/20221112.3整型數(shù)據(jù)整數(shù)類型的有關(guān)數(shù)據(jù):類
2.3整型數(shù)據(jù)例如:整數(shù)13在內(nèi)存中實際存放的情況:12/13/20221122.3整型數(shù)據(jù)例如:整數(shù)13在內(nèi)存中實際存放的情況:
2.3整型數(shù)據(jù)(3)整型變量的定義:C規(guī)定在程序中所有用到的變量都必須在程序中定義,即“強制類型定義”。
例如:
inta,b(指定變量a、b為整型)
unsignedshortc,d;(指定變量c、d為無符號短整型)
longe,f;(指定變量e、f為長整型)12/13/20221132.3整型數(shù)據(jù)(3)整型變量的定義:12/12/20例2.2整型變量的定義與使用
#include<stdio.h>
voidmain()
{inta,b,c,d;/*指定a、b、c、d為整型變量*/
unsignedu;/*指定u為無符號整型變量*/
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf(″a+u=%d,b+u=%d\n″,c,d);
}說明:
可以看到不同種類的整型數(shù)據(jù)可以進行算術(shù)運算運行結(jié)果:
a+u=22,b+u=-14
12/13/2022114例2.2整型變量的定義與使用
#include<stdi例2.3整型數(shù)據(jù)的溢出
#include<stdio.h>
voidmain()
{inta,b;
a=32767;
b=a+1;
printf(“%d,%d\n”,a,b);
}
說明:數(shù)值是以補碼表示的。一個整型變量只能容納-32768~32767范圍內(nèi)的數(shù),無法表示大于32767或小于-32768的數(shù)。遇此情況就發(fā)生“溢出”。運行結(jié)果:
32767,-3276812/13/2022115例2.3整型數(shù)據(jù)的溢出
#include<stdio.h在C中,用高位置1來表示負數(shù),int型占兩個字節(jié)共16位,32768的二進制是10000000,00000000,高位為1,系統(tǒng)會認為是負數(shù),所以32768需要用長型表示,占四個字節(jié)。最高位就不是1了。(00000000,00000000,10000000,00000000)
-32768在內(nèi)存中的表示是10000000,00000000。過程是:先讀入正值32768(10000000,00000000),再取反(01111111,11111111),再加1(10000000,00000000)
12/13/2022116在C中,用高位置1來表示負數(shù),int型占兩個字節(jié)12/13/202211712/12/20222312/13/202211812/12/202224
2.3整型數(shù)據(jù)2.3.3整型常量的類型(1)一個整數(shù),如果其值在-32768~+32767范圍內(nèi),認為它是int型,它可以賦值給int型和longint型變量。(2)一個整數(shù),如果其值超過了上述范圍,而在-2147483637~+2147483647范圍內(nèi),則認為它是為長整型??梢詫⑺x值給一個longint型變量。12/13/20221192.3整型數(shù)據(jù)2.3.3整型常量的類型12/12
2.3整型數(shù)據(jù)(3)如果所用的C版本(如TurboC)分配給shortint與int型數(shù)據(jù)在內(nèi)存中占據(jù)的長度相同,則它的表數(shù)范圍與int型相同。因此一個int型的常量同時也是一個shortint型常量,可以賦給int型或shortint型變量。
12/13/20221202.3整型數(shù)據(jù)(3)如果所用的C版本(如Turbo
2.3整型數(shù)據(jù)(4)一個整常量后面加一個字母u或U,認為是unsignedint型,如12345u,在內(nèi)存中按unsignedint規(guī)定的方式存放(存儲單元中最高位不作為符號位,而用來存儲數(shù)據(jù))。如果寫成-12345u,則先將-12345轉(zhuǎn)換成其補碼53191,然后按無符號數(shù)存儲。12/13/20221212.3整型數(shù)據(jù)(4)一個整常量后面加一個字母u或UUnsignedint占2個字節(jié)(16位)。12345→二進制-12345→二進制(補碼)原:補:Unsigned:=5319112/13/2022122Unsignedint占2個字節(jié)(16位)。-12345
2.3整型數(shù)據(jù)(5)在一個整常量后面加一個字母l或L,則認為是longint型常量。
例如:123l.432L.0L用于函數(shù)調(diào)用中。如果函數(shù)的形參為longint型,則要求實參也為longint型。12/13/20221232.3整型數(shù)據(jù)(5)在一個整常量后面加一個字母l或
2.4浮點型數(shù)據(jù)2.4.1浮點型常量的表示方法兩種表示形式小數(shù)指數(shù)0.1233e-3注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e
12/13/20221242.4浮點型數(shù)據(jù)2.4.1浮點型常量的表示方法兩種表小
2.4浮點型數(shù)據(jù)規(guī)范化的指數(shù)形式:
在字母e(或E)之前的小數(shù)部分中,小
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023九年級數(shù)學(xué)上冊 第二十一章 一元二次方程21.2 解一元二次方程21.2.3 因式分解法教案(新版)新人教版
- 高考地理一輪復(fù)習(xí)第十章產(chǎn)業(yè)區(qū)位因素第二節(jié)工業(yè)區(qū)位因素及其變化課件
- 現(xiàn)場安全分析月度例會
- 潤滑脂振蕩磨損性能測試方法(征求意見稿)
- 空調(diào)機房管理規(guī)范
- 自建房泥水裝修合同(2篇)
- 教科書課件目錄
- 教師 黨課 課件
- 水調(diào)歌頭課件在線
- 勵志 堅持課件
- 文件管理系統(tǒng)畢業(yè)設(shè)計論文
- 2019年重慶普通高中會考通用技術(shù)真題及答案
- 天秤座小奏鳴曲,Libra Sonatine;迪安斯,Roland Dyens(古典吉他譜)
- 鋼筋混凝土工程施工及驗收規(guī)范最新(完整版)
- 求數(shù)列的通項公式常見類型與方法PPT課件
- 光纜施工規(guī)范及要求
- 關(guān)于加強內(nèi)蒙古科協(xié)信息宣傳工作的意見內(nèi)蒙古公眾科技網(wǎng)
- 三國志11全人物信息(五維、特技、生卒年等)
- 第六章 氣體射流
- 華南農(nóng)業(yè)大學(xué)本科生畢業(yè)論文范例Word版
- [語言類考試復(fù)習(xí)資料大全]申論模擬1164
評論
0/150
提交評論