




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數據類型與運算規則數據類型與運算規則1C語言程序設計-教學內容一C語言程序設計概述(第1、2章)二數據類型與運算規則(第3章)三順序結構程序設計(第4章)四選擇結構(第5章)五循環結構(第6章)七函數(第8章)六數組(第7章)八指針(第9章)九結構(第10章)十文件(第11章)語言規則程序流程數據結構——自學——基礎——重點,難1C語言程序設計-教學內容一C語言程序設計概述(第1、2第3章數據類型與運算規則本章要點數據的描述規則數據的操作規則2第3章數據類型與運算規則本章要點3第3章數據類型與運算規則
數據與數據類型
C語言的基本數據類型算術運算與賦值運算關系運算與邏輯運算位運算其它運算混合運算及數據類型轉換數據的描述規則數據的運算規則3第3章數據類型與運算規則數據與數據類型數據的數據的43.1數據與數據類型引入什么是語言規則,為什么要用語言規則?
常量變量運算符表達式函數我們人能明白的、用自然語言和數學語言描述的問題→計算機能明白的、C語言語法規則描述的問題表達式常量變量函數程序設計語言的基本規則包括:43.1數據與數據類型引入常量我們人能明白的、用自然語言53.1數據與數據類型問題常量3、5和3.6的處理是否相同?變量x如何表示?如何存放?計算機如何知道3和5之間的關系?如何輸入?如何存放?計算機如何識別“=”?運算結果放在哪里?計算機完成該計算,首先要解決數據的輸入和存放問題53.1數據與數據類型問題計算機完成該計算,首先要解決數據63.1數據與數據類型程序的任務是對數據進行處理,數據是程序處理的對象,而運算符是施加給這些數據的操作。數據和運算符是表達式的基本元素。數據的存儲數據的操作程序63.1數據與數據類型數據的存儲程序73.1數據與數據類型C語言中的數據類型 整數型int
基本類型 實數型float,double
字符型char
指針類型 數據類型 數組型 構造類型 結構型struct
聯合型union
枚舉型enum
空類型void73.1數據與數據類型C語言中的數據類型8第3章數據類型與運算規則
數據與數據類型
C語言的基本數據類型算術運算與賦值運算關系運算與邏輯運算位運算其它運算混合運算及數據類型轉換8第3章數據類型與運算規則數據與數據類型93.2C語言的基本數據類型本節結構常量字符常量數值常量計算機語言表示數據的基本形式實型常量整型常量字符常量字符串常量變量字符變量數值變量實型變量整型變量指針變量整型實型字符型93.2C語言的基本數據類型本節結構常量字符常量數值常量計103.2C語言的基本數據類型計算機語言表示數據的基本形式常量——程序運行中,值保持不變的量常量的表示方法
整型100,125,-100,0
實型3.14,0.125,-3.789
字符型‘a’,‘b’,‘2’
字符串“a”,“ab”,“1232”103.2C語言的基本數據類型計算機語言表示數據的基本形式113.2C語言的基本數據類型計算機語言表示數據的基本形式符號常量——用來表示常量的標識符例:已知圓半徑r,求圓周長c和面積s的值。
#definePI3.1416 intmain(){ floatr,c,s; scanf("%f",&r); c=2*PI*r;/*
編譯時用3.1416替換PI*/ s=PI*r*r; /*編譯時用3.1416替換PI*/ printf("c=%6.2f,s=%6.2f\n",c,s); }#include<stdio.h>#include…#define….預處理命令113.2C語言的基本數據類型計算機語言表示數據的基本形式123.2C語言的基本數據類型計算機語言表示數據的基本形式例:#defineSAN2+1
如果x=SAN*SAN,x=?
x=5 x=2+1*2+1=5123.2C語言的基本數據類型計算機語言表示數據的基本形式133.2C語言的基本數據類型計算機語言表示數據的基本形式變量——程序運行時,值可以改變的量有關變量的規定:變量通過變量名標識,變量名和內存中的存儲單元相對應。編寫程序時通過變量名來存、取存儲單元;變量必須先定義(說明),再賦值,再使用。133.2C語言的基本數據類型計算機語言表示數據的基本形式14553.2C語言的基本數據類型計算機語言表示數據的基本形式變量——程序運行時,值可以改變的量內存變量a1000H1001H1002H25612常量不占用內存空間!!14553.2C語言的基本數據類型計算機語言表示數據的基本153.2C語言的基本數據類型計算機語言表示數據的基本形式變量的定義——變量是以標識符的形式來表示類型的。在C語言中,用類型說明語句對變量進行定義,其形式如下: 類型說明符變量名表;inta,b;/*說明a,b為整型變量*/charc;/*
說明c為字符變量*/doublex,y;/*
說明x,y為雙精度實型變量*/153.2C語言的基本數據類型計算機語言表示數據的基本形式163.2C語言的基本數據類型計算機語言表示數據的基本形式小結C程序中,常量直接以自身的存在形式體現其值和類型:12,0x12,0x12L,12.,.12,2e3,1.2f,2e3L變量以標識符的形式來表示類型:inta;charc;doublex,y;常量不占內存,程序運行時它作為操作對象直接出現在運算器的各種寄存器中;163.2C語言的基本數據類型計算機語言表示數據的基本形式173.2C語言的基本數據類型計算機語言表示數據的基本形式程序中的一個變量可以看作是一個存儲數據的容器,功能是存儲數據;C語言要求,每個變量必須先定義,再賦值,再使用。173.2C語言的基本數據類型計算機語言表示數據的基本形式183.2C語言的基本數據類型本節介紹各種數據類型的名稱、存放的長度、表示數的范圍、各種數據類型變量的說明格式、初始化、常量的表示方法以及使用中的注意事項等。重點和難點數據的表示范圍實型數據的有效數字轉義字符的概念183.2C語言的基本數據類型本節介紹各種數據類型的名稱、193.2C語言的基本數據類型整型數據及其表示整數類型
整數基本類型表基本整型短整型長整型無符號整型無符號短整型無符號長整型193.2C語言的基本數據類型整型數據及其表示整數基本類203.2C語言的基本數據類型整型數據及其表示整型常量整型常量的類型根據值大小默認類型在常量后面加l或L,表示longint型
例如:123L,0L,432l都是longint型常量整型常量的不同數值表示方法
十進制:0~9
八進制:0~7,以0開頭 十六進制:0~9,A~F/a~f,以0x或0X開頭 例如100、-8L、0;010、024L;0x18L、0X1F整型數據包括整型常量和整型變量,整型數據以二進制補碼形式存儲。整型常量都是有符號的203.2C語言的基本數據類型整型數據及其表示整型數據包括213.2C語言的基本數據類型整型數據及其表示整型變量整型變量的形式 基本整型 int
短整型 shortint
長整型 long int
無符號整型 unsignedint
無符號短整型 unsignedshort
無符號長整型 unsignedlong占存儲空間占內存字節數2或4242或424213.2C語言的基本數據類型整型數據及其表示占內存字節數223.2C語言的基本數據類型整型數據及其表示整型變量的定義 類型說明符變量名表; 例:inti,j;
longk,m; unsignedintx,yC中的所有變量必須先定義后使用!!此時變量有值嗎?223.2C語言的基本數據類型整型數據及其表示此時變量有值233.2C語言的基本數據類型類型存儲字節數最小值最大值shortint2-3276832767unsignedshortint2065535int2-3276832767unsignedint2065535longint4-21474836482147483648unsignedlongint40429496729516位機各類型數據通常取值范圍233.2C語言的基本數據類型類型存儲字節數最小值最大值s243.2C語言的基本數據類型類型存儲字節數最小值最大值shortint2-3276832767unsignedshortint2065535int4-21474836482147483648unsignedint404294967295longint4-21474836482147483648unsignedlongint40429496729532位機各類型數據通常取值范圍243.2C語言的基本數據類型類型存儲字節數最小值最大值s253.2C語言的基本數據類型整型數據及其表示int型數的表示范圍:存儲長度16位二進制(2B)
000000000000000100000000000000111000000000000000=1=3絕對值最大的負數?=-215=-32768a最大的正數?=215-1=327670111111111111111253.2C語言的基本數據類型整型數據及其表示存儲長度16263.2C語言的基本數據類型整型數據及其表示int型數的表示范圍:
定點二進制補碼表示占2個字節存儲數的表示范圍:-32768~32767263.2C語言的基本數據類型整型數據及其表示273.2C語言的基本數據類型整型數據及其表示整型數據在使用中應注意以下幾個問題:
(1)變量要先定義后使用;
(2)數據溢出;
(3)常量與變量的類型要匹配。例:編寫求兩數和的C程序并上機運行。程序如下:閱讀P44中的幾個關于整型數據使用中應注意的幾個問題的討論。273.2C語言的基本數據類型整型數據及其表示閱讀P44中283.2C語言的基本數據類型整型數據及其表示/*SUM.C源程序*/intmain() /*求兩數和主函數*/{ shortinta,b,c; /*說明a、b為短整型變量*/ a=32767; /*為變量a賦最大值*/ b=3; /*為變量b賦值*/ c=a+b; /*計算a+b并將結果賦值給變量c*/ printf("c=%d\n",c); /*輸出變量c的值*/}283.2C語言的基本數據類型整型數據及其表示293.2C語言的基本數據類型實型數據及其表示實數類型
實數基本類型表單精度型雙精度型長雙精度型293.2C語言的基本數據類型實型數據及其表示實數基本類303.2C語言的基本數據類型實型數據及其表示實型數在計算機中的存放形式(十進制實型數據0.12345610-2,這里以十進制表示,計算機中是二進制)
+
0.123456
數符指數符號指數-
2小數小數部分指數部分303.2C語言的基本數據類型實型數據及其表示+313.2C語言的基本數據類型實型數據及其表示其中,小數部分一般都采用規格化的數據形式,即:小數點放在第一個有效數字前面,使小數部分放小于1的純小數。單精度實數的精度取決于小數部分的23位二進制數位所能表達的數值位數,將其轉換為十進制,最多可表示7位十進制數字,所以單精度實數的有效位是7位。雙精度型用于擴大存儲位數,目的是增加實數的長度,減少累積誤差,改善計算精度313.2C語言的基本數據類型實型數據及其表示323.2C語言的基本數據類型實型數據及其表示實型常量兩種表示形式小數:0.123——“.”不可省指數:3e-3——e前有數字,e后是整數實型常量只能用十進制表示,不能用八進制和十六進制。都是有符號數。實型數據包括實型常量和實型變量,實型常量一般作為雙精度來處理。要表示單精度或長雙精度要用f(F)或l(L)1e3、1.8e-3、-123e-6、-.1e-3e5、1e-3.2、e、.e-03X√323.2C語言的基本數據類型實型數據及其表示實型數據包括333.2C語言的基本數據類型實型數據及其表示實型變量實型變量的定義 類型說明符變量名表; 例:float
a,b;
double
c,d; longdoublee,f;333.2C語言的基本數據類型實型數據及其表示343.2C語言的基本數據類型實型數據及其表示實型變量的有關規則:什么是數的范圍?什么是有效位?類型說明符長度數的范圍有效數字單精度型float4字節-1038~10387雙精度型double8字節-10308~10308
15343.2C語言的基本數據類型實型數據及其表示什么是數的范353.2C語言的基本數據類型實型數據及其表示2-23<=|尾數|<=1-2-23
7位23位float尾數階碼階符數符
什么是數的范圍?什么是有效位?
階碼:2127=1.70141×10381個字節3個字節
0.0000001192892353.2C語言的基本數據類型實型數據及其表示2-23<363.2C語言的基本數據類型實型數據及其表示實型數據應用中的誤差問題:
由于機器存儲的限制,使用實型數據會產生一些誤差,運算次數愈多,誤差積累就愈大,所以要注意實型數據的有效位,合理使用不同的類型,盡可能減少誤差。363.2C語言的基本數據類型實型數據及其表示373.2C語言的基本數據類型例:/*輸出實型數據a、b*/intmain(){floata;/*說明變量a為單精度型*/doubleb;/*說明變量b為雙精度型*/a=12345.6789;/*為a賦值*/b=0.1234567891234567899e15;/*為b賦值*/printf(“a=%f,b=%f\n”,a,b);/*輸出a、b的值*/}理想結果應該是照原樣輸出,即:a=12345.6789,b=0.1234567891234567899e15但運行該程序,實際輸出結果是:a=12345.678711,b=123456789123456.800000double型最多表示15位有效數字373.2C語言的基本數據類型例:/*輸出實型數據a、b*383.2C語言的基本數據類型實型數據及其表示實型數的分辨率: 最小正數:10-38
小于該數時處理為0下溢 最大正數:1038
大于該數時提示出錯上溢實型數在計算機內部都按指數形式存放;數的存儲結構和精度與計算機硬件特性有關。
超出范圍的數機器如何處理?請注意這個問題!383.2C語言的基本數據類型實型數據及其表示超出范圍的393.2C語言的基本數據類型字符型數據及其表示字符型數據——以ASCII碼存儲(1字節)例:字符‘A’的ASCII碼值用十進制數表示是65,用二進制數表示是1000001,在計算機中的存儲為:字符‘A’的ASCII碼的二進制表示
整型數65的二進制表示
00000000
0100000101000001393.2C語言的基本數據類型字符型數據及其表示字符‘A’403.2C語言的基本數據類型字符型數據及其表示字符‘A’的存儲形式實際上就是一個整型數65,所以它可以直接與整型數據進行算術運算、混合運算,與整型變量相互賦值,也可以將字符型數據以字符或整數兩種形式輸出。以字符形式輸出時,先將ASCII碼值轉換為相應的字符,然后再輸出;以整數形式輸出時,直接將ASCII碼值作為整數輸出。在ASCII范圍以內,整型數據與字符型數據可以通用。403.2C語言的基本數據類型字符型數據及其表示413.2C語言的基本數據類型字符型數據及其表示字符型常量用單引號包含的一個字符是字符型常量。只能包含一個字符例:‘A’,‘a’,‘1’ ‘abc’,“A”X√字符串常量413.2C語言的基本數據類型字符型數據及其表示X√字符串423.2C語言的基本數據類型字符型數據及其表示轉義字符轉義字符:是特殊性質的字符常量,用于表示常用的但卻難以用一般形式表示的不可顯示字符;轉義字符的表示:用一個轉義標識符“\”開頭,后面是需要的轉義字符。常用的轉義字符序列的字符常量見表:423.2C語言的基本數據類型字符型數據及其表示433.2C語言的基本數據類型轉義字符表:
轉義字符功能
\n 換行
\t 水平跳格
\b 退格
\r 回車
\f 走紙換頁
\\ 反斜線字符
\‘ 單引號字符
\“ 雙引號字符
\ddd 1至3位八進制數表示的字符
\xdd 1至2位十六進制數表示的字符轉義符“\”表示將其后的字符原來的含義進行轉換,變成某種另外特殊約定的含義。可以用哪些方式輸出換行?433.2C語言的基本數據類型轉義字符表:轉義符“\”表示443.2C語言的基本數據類型字符型數據及其表示轉義字符“\n”中的n已不代表字符常量“n”,n轉義成換行。轉義字符“\015”是“\ddd”形式的轉義字符,其中“015”是八進制字符串,它表示了ASCII碼表中編碼為十進制13的字符,也就是回車。轉義字符“\x1f”是“\xdd”形式的轉義字符,其中“1f”是十六進制字符串,它表示了ASCII碼表中編碼為十進制31的字符,也就是▼。\000~\177\x00~\x7F443.2C語言的基本數據類型字符型數據及其表示\000~453.2C語言的基本數據類型字符型數據及其表示字符型變量定義形式:char存儲空間:一個變量一個字節例:intmain() {charc; c=‘c’; printf(“%c”,c); }運行結果:c題目中的哪些c是等價的?一個字符變量只能包含一個字符。453.2C語言的基本數據類型字符型數據及其表示運行結果:46符號常量——編譯前替換變量——標識一塊內存空間 先定義,再賦值,再使用整型——可能溢出,用long實型常量——小數點,e前有數字,e后是整數字符——‘’以ASCII碼存儲,與整型通用字符串——“”多一個\046符號常量——編譯前替換473.2C語言的基本數據類型字符型數據及其表示練習intmain(){ printf(“\060,\60\n");printf("\605,\608");}
輸出:0,0 ?,08473.2C語言的基本數據類型字符型數據及其表示輸出:0483.2C語言的基本數據類型字符型數據及其表示例:
intmain(){chara,b,c; intd; a='\005'; b='\060'; c='A'; d=1089;/*
提示:1089=0x0441*/ printf("a=%cb=%cc=%cd=%c\n",a,b,c,d); printf("a=%db=%dc=%dd=%d\n",a,b,c,d);}00000100
01000001d6500110000b00000101a內存483.2C語言的基本數據類型字符型數據及其表示00493.2C語言的基本數據類型字符型數據及其表示字符串常量例:“a”串長1 “ThisisCstring”串長16 “”(空格)串長1 “”(不含空格)串長0
n個字符組成的字符串常量,占空間為n+1個字節(B)china\0字符串結束標記“空”字符字符串常量是用雙引號括起來的一個或多個字符。C中沒有專用的字符串變量strlen是空的嗎?493.2C語言的基本數據類型字符型數據及其表示china503.2C語言的基本數據類型字符型數據及其表示字符串常量思考: 字符串“w\16”占幾個字節? 字符串“w\16\0good”占幾個字節?字符串結束標記printf(“%d”,sizeof(“w\16\0good”));輸出?8printf(“w\16\0good”);輸出?w?printf(“%d”,strlen(“w\16\0good”));輸出?2503.2C語言的基本數據類型字符型數據及其表示字符串結束513.2C語言的基本數據類型字符型數據及其表示字符數據的應用舉例例:計算字符‘A’與整型數據25的和intmain(){chara; /*說明a為字符型變量*/intb; /*說明b為整型變量*/a=‘A’; /*為a賦字符常量‘A’*/b=a+25;/*計算65+25并賦值給字符變量b*/printf(”%c,%d,%c,%d\n”,a,a,b,b); /*以字符型和整型兩種格式輸出a、b*/}程序運行的輸出結果:A,65,Z,90513.2C語言的基本數據類型字符型數據及其表示523.2C語言的基本數據類型變量的初始化在定義變量時為其指定值方法:inta=5;inta,b,c=5;inta=5,b=5,c=5;inta=b=c=5;X初始化1.定義變量的同時為其賦初值2.初始化不是在編譯時進(除后面介紹的外部變量和靜態變量),而是在程序運行時完成的理清:說明、聲明、定義、賦值、初始化523.2C語言的基本數據類型變量的初始化X初始化1.定533.2C語言的基本數據類型floatx=123.45;/*說明x為實型量,且賦初值為123.45*/inta,b,c=10; /*僅給c賦初值10*/inta1=10,b1=6,c1=10;/*分別給a、b、c賦不同的初值*/doublepai=3.14;/*為雙精度實型變量賦初值為3.14*/charch='a';/*說明字符變量ch,并賦初值為'a'*/
以上為x、c、a1、b1、c1、pai和ch都賦了初值,它與用賦值語句賦值有同樣的效果。例如上面charch=‘a’;相當于: charch; ch=‘a’;
例:533.2C語言的基本數據類型floatx=12354第3章數據類型與運算規則什么是語言規則,為什么要用語言規則?
常量變量運算符表達式函數我們人能明白的、用自然語言和數學語言描述的問題→計算機能明白的、C語言語法規則描述的問題表達式常量變量函數程序設計語言的基本規則包括:54第3章數據類型與運算規則常量我們人能明白的、用自然語55第3章數據類型與運算規則
數據與數據類型
C語言的基本數據類型算術運算與賦值運算關系運算與邏輯運算位運算其它運算混合運算及數據類型轉換數據的描述規則數據的運算規則55第3章數據類型與運算規則數據與數據類型數據的數據的56+-*/%><==>=<=
!=!&&||=及其擴展?:,*&sizeof(type).->[]++--&|~^<<>>條件運算符C語言的運算符:56+-*/%><==>=<=!=!&&|57第3章數據類型與運算規則數據對象+運算符→表達式 語句 函數 文件 程序a,b,c,‘A’3.2=,+,-->>&&a+bc--d=a+b;c--;…57第3章數據類型與運算規則數據對象+運算符→表達式a,58第3章數據類型與運算規則
數據與數據類型
C語言的基本數據類型算術運算與賦值運算關系運算與邏輯運算位運算其它運算混合運算及數據類型轉換58第3章數據類型與運算規則數據與數據類型593.3算術運算與賦值運算語言中的運算規則運算分量運算符
x=5+b*c對數據進行運算的符號被加工的數據表達式+=
在計算機語言中,所有的運算都是照事先規定的規則進行的,運算的操作規則,包括運算符、表達式和運算過程。593.3算術運算與賦值運算語言中的運算規則運算分量運算符603.3算術運算與賦值運算
表達式的運算結果稱為表達式的值C中運算符算術運算符賦值運算符關系運算符邏輯運算符位運算逗號運算符條件運算符…...
運算符和運算分量構成表達式603.3算術運算與賦值運算表達式的運算結果稱為表達式的613.3算術運算與賦值運算學習運算符應掌握的要點:
運算符的種類與功能運算符與運算分量的關系個數類型A+B(a>b)?a:b目單目運算雙目運算三目運算關系不同類型的變量,所占存儲空間、數的表示范圍、有效位和允許的操作不同613.3算術運算與賦值運算學習運算符應掌握的要點:運算623.3算術運算與賦值運算a+b-c5>7>2a=b=5右結合左結合x=a+b*c優先級:運算符的執行順序單目運算符的優先級通常高于雙目和三目運算符結合性:相同優先級的多個運算符的運算順序單目/三目運算符 通常是右結合, 雙目運算符通常 是左結合(賦值運算符除外)623.3算術運算與賦值運算a+b-c右結合左結合x=a+633.3算術運算與賦值運算
運算結果的類型
整型
邏輯型x=5+8‘a’>10013加法運算的結果
表達式的值——即運算結果的值關系運算的結果賦值運算的結果?013633.3算術運算與賦值運算運算結果的類型整型邏輯643.3算術運算與賦值運算算術運算符和算術表達式+
加法運算、正值運算-
減法運算、負值運算* 乘法運算/
除法運算% 求余運算
(結合性→)1.參加運算的對象都是int型,其結果截取為int型10/311/31/210.0/3 1./210/5*3 10/(5*3)2.求余運算的對象必須是整型10%39%3–10%310%–3(12)(13)643.3算術運算與賦值運算算術運算符和算術表達式+ 加法653.3算術運算與賦值運算例
10/3 11/3 1/2 1./2 10.0/3 10/5*3 10/(5*3)10%39%3-10%310%-3-10%-3——3——3——0——0.5——3.333333——6——0——1——0——-1——1——-1653.3算術運算與賦值運算例——3——1663.3算術運算與賦值運算
算術表達式
C語言的算術表達式由算術運算符、常量、變量、函數和圓括號組成,例如:
3+5 12.34-23.65*2 -5*(18%4+6) x/(67-(12+y)*a)
663.3算術運算與賦值運算算術表達式673.3算術運算與賦值運算
使用算術表達式時應注意:雙目運算符兩側運算對象的類型必須一致,所得結果的類型與運算對象的類型一致。如果類型不一致,系統將自動按轉換規律先對操作對象進行轉換,然后再進行相應的運算。用括號可以改變表達式的運算順序,左右括號必須配對,多層括號都用圓括號“()”表示,運算時先計算內括號中表達式的值,再計算外括號中表達式的值。673.3算術運算與賦值運算使用算術表達式時應注意:683.3算術運算與賦值運算例:將下列數學表達式:
寫成符合C語言規則的表達式如下:(a+b+c)/(sqrt(a)+b*(sin(x)+sin(y)+sin(z)))其中(sqrt(a)和sin(x)、sin(y)、sin(z)都是數學函數的引用,表達式中用了三層括號,以保證表達式的運算順序。683.3算術運算與賦值運算例:將下列數學表達式:寫成符693.3算術運算與賦值運算自增自減運算變量自身加(減)1
優先級(14)k=k+1
k++先使用變量k的值,k再加1++kk先加1,再使用變量k的值k=k-1
k--先使用變量k
的值,k再減1--kk先減1,再使用變量k
的值693.3算術運算與賦值運算自增自減運算變量自身加(減)1703.3算術運算與賦值運算
自增、自減運算符只能用于變量,不能用于表達式和常量
優先級:高于雙目算術運算符
結合性:從右向左(k+i)++,--3k=3;printf(“%d”,k++);輸出3后,k的值為4k=3;printf(“%d”,++k);輸出4后,k的值為4自增、自減運算是對變量進行加1或減1操作后再對變量賦新的值,表達式和常量不能進行賦值操作。k=6;n=-k++;n?k?703.3算術運算與賦值運算自增、自減運算符只能用713.3算術運算與賦值運算思考 intn=6; printf("%d,n=%d\n",-n++,n); printf("n=%d\n",n); printf(“n=%d,%d\n",n,-n++); printf("n=%d\n",n); printf("%d,n=%d\n",-++n,n); printf("n=%d\n",n);-6,n=6n=7-7,n=6n=7n=7,-6n=7713.3算術運算與賦值運算思考-6,n=6-7,n=6n723.3算術運算與賦值運算intmain(){
inta,b,s;
a=5;b=5;
s=a+b;
printf(“%d,%d,%d\n”,a,b,s);
s=a+++b;
printf(“%d,%d,%d\n”,a,b,s);
s=++a+b;
printf(“%d,%d,%d\n”,a,b,s);
s=--a+b;
printf(“%d,%d,%d\n”,a,b,s);
s=a--+b;
printf(“%d,%d,%d\n”,a,b,s);
s=a+b;
printf(“%d,%d,%d\n”,a,b,s);
}s=a+++b
優先級?s=a+++bs=a+++bs=a+(++b)√723.3算術運算與賦值運算intmain()s=a++733.3算術運算與賦值運算s=a+b;s=a+++b;s=++a+b;s=--a+b;s=a--+b;s=a+b;
a=5,b=55+5=105+5=107+5=126+5=116+5=115+5=10
abs551065107512651155115510題目分析:a733.3算術運算與賦值運算s=a+b;743.3算術運算與賦值運算inta=2,b=1;a+=++b;b=a+b++;k=2;i=k+++k++;k=2;i=++k+(++k);k=4i=4k=4i=8a=4,b=2b=a+b,b++a=4,b=7743.3算術運算與賦值運算inta=2,b=1;k=2753.3算術運算與賦值運算main(){
intk=2,i;
i=(k++)+(k++)+(k++);
printf("i=%d,k=%d\n",i,k);
k=2;
i=(++k)+(++k)+(++k);
printf("i=%d,k=%d\n",i,k);}TCi=6,k=5i=15,k=5i=13,k=5DC753.3算術運算與賦值運算main()TCi=6,k=5763.3算術運算與賦值運算賦值運算符和賦值表達式將一個常量、一個變量或一個表達式的值賦給一個變量x=5y=x+10
賦值運算符a+b=12a+1=12763.3算術運算與賦值運算賦值運算符和賦值表達式將一個常773.3算術運算與賦值運算可以將一個實型賦給一個整型也可將一個整型賦給一個實型類型轉換中的“賦值轉換”接受賦值的變量類型決定了運算結果的存儲類型intx;x=5.3;x的值為5floaty;y=5;y的值為5.000000…773.3算術運算與賦值運算可以將一個實型賦給一個整型類型783.3算術運算與賦值運算
復合的賦值運算
賦值運算的優先級(2)
賦值運算的結合性比算術運算低,只比逗號運算高從右向左x=y=5x=x+nx+=n賦值運算符兩側出現相同的變量inta=b=5;inta,b;a=b=5;√783.3算術運算與賦值運算復合的賦值運算賦值運算793.3算術運算與賦值運算x=x+nx=x-nx=x*nx=x/nx=x%nx+=nx-=nx*=nx/=nx%=n算術運算與賦值運算相結合x與n均為整數793.3算術運算與賦值運算x=x+nx+=n算術運803.3算術運算與賦值運算賦值表達式
變量名
=表達式 求解過程:
(1)先計算右邊表達式的值;
(2)將計算結果賦給左邊的變量。
例:a*=b+5a=a*b+5?a=a*(b+5)√a=b+5803.3算術運算與賦值運算賦值表達式例:a*=b+5a813.3算術運算與賦值運算賦值表達式的值
inta,b; a=b=85; if(a=100) … if(a==100) …813.3算術運算與賦值運算賦值表達式的值82第3章數據類型與運算規則
數據與數據類型
C語言的基本數據類型算術運算與賦值運算關系運算與邏輯運算位運算其它運算混合運算及數據類型轉換82第3章數據類型與運算規則數據與數據類型833.4關系運算與邏輯運算計算機具有邏輯判斷能力,其判斷的依據是計算機內部進行邏輯運算的結果。C提供了關系運算和邏輯運算,用來構造C程序控制中的條件,實現程序的選擇結構和循環結構控制。關系運算和邏輯運算的結果都是邏輯值,即“真”和“假”。C語言中沒有專用的邏輯值,用整數值1和0標識邏輯真和假。在C語言中,將非0就視為“真”。833.4關系運算與邏輯運算計算機具有邏輯判斷能力,其判斷843.4關系運算與邏輯運算關系運算符與關系表達式關系運算符
關系運算是一種比較運算,將兩個值(表達式)進行比較,判斷比較的結果是否符合給定的條件大于>,大于等于>=,小于<,不等!=,小于等于<=,恒等==
運算符:>,<,>=,<=(10)
==,!=(9)
優先級:關系運算的優先級高于賦值,低于算術
結合性:從左向右a>b>c843.4關系運算與邏輯運算關系運算符與關系表達式853.4關系運算與邏輯運算關系表達式關系表達式的結果是一個邏輯值,根據關系是否滿足分別取真1或假0結果:2e1關系運算符e2100>=13.5<3a+b>c5*18==90(int)2.5!=2.5inti=1,j=7,a;a=i+(j%4!=0)a的值?
例:853.4關系運算與邏輯運算關系表達式關系表達式的結果是一863.4關系運算與邏輯運算例:intmain(){floata=1.1,b; b=a/2.0; b=b*2.0; if(b==1.1)printf(“b==a\n”); elseprintf(“b!=a\n”); return0;}不要用==判斷兩個浮點數是否相等,而是:
|a–b|<ε
ε是一個極小的數863.4關系運算與邏輯運算例:不要用==判斷兩個浮點數是873.4關系運算與邏輯運算邏輯運算符與邏輯表達式邏輯運算符
運算符:&&(與):兩邊為1,結果為1||(或):兩邊有一個為1,結果為1!(非):非1為0,非0為1
結合性:&&和||是左結合,!是右結合
優先級:!(14)
,&&(5),||(4)873.4關系運算與邏輯運算邏輯運算符與邏輯表達式運算符883.4關系運算與邏輯運算邏輯表達式(a>b)&&(x>y);a>b&&x>y;(y||b)&&(y||a);y||b&&y||a;例:a=5,b=7,c=4,d=3
x=(a+b)>(c+d)&&(d>a)先做算術運算,再做關系判斷,再做邏輯運算,將最后結果賦給xx的值?0e1邏輯運算符e2任何非零實數均作為邏輯上的1用邏輯運算符將關系運算表達式或邏輯量連接起來構成邏輯表達式,邏輯表達式的值是1或0,表示真或假883.4關系運算與邏輯運算邏輯表達式(a>b)&&(x>893.4關系運算與邏輯運算4>3>2>1從左向右運算(4>3)邏輯值為1(1>2)邏輯值為0(0>1)邏輯值為0整個表達式的值為0
例:893.4關系運算與邏輯運算4>3>2>1從左向右運算(4903.4關系運算與邏輯運算
a=1,b=2,c=3,d=4,m=1,n=1執行(m=a>b)&&(n=c>d)之后m=?n=?m=0
n=1
例:在邏輯表達式中,并不是所有的邏輯運算都必須執行:如果&&的一邊已經為0,結果一定為0,&&后面的就不做了;如果||的一邊已經為1,結果一定為1,后面的也不做了903.4關系運算與邏輯運算a=1,b=2,913.4關系運算與邏輯運算1<4&&4<74<1&&7>4!(2<=5)||5(1>3)||!(2<5)(4<=6)&&!(3>=7)10101求表達式的值:913.4關系運算與邏輯運算1<4&&4<71求表達式92intmain(){inta=3,b=1,x=2,y=0,s1,s2,s3,s4,s5,s6,s7,s8;
s1=(a>b)&&(x>y);
s2=a>b&&x>y;
s3=(y||b)&&(y||a);
s4=y||b&&y||a;
s5=!a||a>b;
s6=a>=10&&b&&x++;
printf("x=%d\n",x);
s7=a>=10||y||x++;
printf("x=%d\n",x);
s8=++a||y&&++x;
printf("s1=%d,s2=%d,s3=%d,s4=%d,s5=%d\n",s1,s2,s3,s4,s5);
printf("s6=%d,s7=%d,s8=%d\n",s6,s7,s8);
printf("x=%d,a=%d\n",x,a);}
練習92intmain()練習933.4關系運算與邏輯運算
練習:用C語言描述1)a小于b或小于c,但a和b都大于d2)a和b中有一個大于c3)a是非正整數4)a是奇數5)a不能被b整除6)a是帶小數的正數,b是帶小數的負數如何表示閏年能夠被4整除同時不能被100整除能夠被400整除或933.4關系運算與邏輯運算練習:用C語言描述1)a小943.4關系運算與邏輯運算條件運算符與條件表達式例:符號函數sign的數學定義如下:對應的C函數定義如下:doublesign(doublex){returnx>0?1:(x==0?0:-1);}943.4關系運算與邏輯運算條件運算符與條件表達式例:符號953.4關系運算與邏輯運算條件運算符唯一的三目運算符e1?e2:e3判斷表達式1的值,若為非0(真),將表達式2的值作為整個條件表達式的結果;否則,將表達式3的值作為整個表達式的結果
。
功能:x=(a>b)?a:b
當a=9,b=5時,條件表達式的值為9,x=9注意:e2、e3不是都要計算。953.4關系運算與邏輯運算條件運算符唯一的三目運算符e1963.4關系運算與邏輯運算高于賦值,低于其它(3)
優先級:
結合性:從右向左a=5,b=4,c=3,d=2x=(a>b)?a:(a>d)?c:dx=(a>b)?
a:((a>d)?c:d)x=((a>b)?a:(a>d))
?
c:d
數據類型可以不同√963.4關系運算與邏輯運算高于賦值,低于其它(3)優先973.4關系運算與邏輯運算if語句與條件運算的關系例:求一個數字的絕對值if(y<0)
x=-y;else
x=y;(y<0)?x=-y:x=y;等價等價x=(y<0)?-y:y;說明:ifelse可以完成與條件運算符(?:)完全相同的任務,并且可以進行相應的轉換。973.4關系運算與邏輯運算if語句與條件運算的關系if98第3章數據類型與運算規則
數據與數據類型
C語言的基本數據類型算術運算與賦值運算關系運算與邏輯運算位運算其它運算混合運算及數據類型轉換98第3章數據類型與運算規則數據與數據類型993.5位運算位運算的基本概念
把整型數看作為一個二進制序列,按位進行六種運算0010000001010011993.5位運算位運算的基本概念把整型數看作為一個二進制1003.5位運算位運算符運算符 含義 對象個數 結合方向優先級~ 按位求反 單目 右 (14)<< 按位左移 雙目 左 (11)>> 按位右移 雙目 左 (11)& 按位與 雙目 左 (8)| 按位或 雙目 左 (6)^ 按位異或 雙目 左 (7)
位運算應用于整型數據,即把整型數據看成是固定的二進制序列,然后對這些二進制序列進行按位運算。1003.5位運算位運算符運算符 含義 對象個數 結1013.5位運算按位邏輯運算按位與運算&按位或運算|a:1010,1001,0101,0111&b:0110,0000,1111,1011c:0010,0000,0101,0011a:1010,1001,0101,0111|b:0110,0000,1111,1011c:1110,1001,1111,11111013.5位運算按位邏輯運算a:1010,1001023.5位運算按位異或運算^按位求反運算~a:1010,1001,0101,0111^b:0110,0000,1111,1011c:1100,1001,1010,1100~a:1010,1001,0101,0111
c:0101,0110,1010,10001023.5位運算按位異或運算^a:1010,11033.5位運算按位邏輯運算的應用用&屏蔽特定位(將特定位清為0)用&保留特定位用|將特定位置為1用^將特定位翻轉請課后看例題1033.5位運算按位邏輯運算的應用請課后看例題1043.5位運算設intx=7,求y=~x
例:y=~x=~7=~(0000,0000,0000,0111) =1111,1111,1111,1000=-8對x的值(7)按位求反結果恰為-8的補碼表示,其原因是計算機中有:整數求負=整數求補=按位求反+1
所以:按位求反=整數求負-1。注意求反運算與取負和邏輯非運算的區別: y=-x;結果為:y=-7,
y=!x;結果為:y=0。1043.5位運算設intx=7,求y=~x1053.5位運算移位運算
x<<n或x>>n
左移和右移:把整數作為二進制位序列,求出把這個序列左移或者右移若干位所得到的序列。
其中x為移位運算對象,是要被移位的量;n是要移動的位數。數據左移后空出來的位置補0,右移后對無符號數補0,有符號數正數補0,負數補1。a:1101,0011b=a<<2:0100,1100c=a>>2:0001,0011左移位或右移位相當于整數乘以或除以2的冪1053.5位運算移位運算左移和右移:把整數作為二1063.5位運算位運算賦值運算符x=x&nx=x|nx=x<<nx=x>>nx=x^nx&=nx|=nx<<=nx>>=nx^=n位運算與賦值運算相結合1063.5位運算位運算賦值運算符x=x&nx&=n107第3章數據類型與運算規則
數據與數據類型
C語言的基本數據類型算術運算與賦值運算關系運算與邏輯運算位運算其它運算混合運算及數據類型轉換107第3章數據類型與運算規則數據與數據類型1083.6其它運算逗號運算符(e1,e2,e3,en)用于連接幾個表達式
求解過程:順序求解幾個表達式
優先級(15)逗號運算符的優先級最低
結合性:左結合x=((a=4*5,a*2),a+6)逗號表達式的值為最后一個表達式的值1083.6其它運算逗號運算符(e1,e2,e3,e1093.6其它運算.和->運算符
作用是引用構造數據類型的結構和聯合中的分量,即表示結構體或聯合中的成員變量。其形式為: 結構體名.結構體成員名或 結構體名->結構體成員名例如:stu.numstu->num1093.6其它運算.和->運算符例如:stu.num1103.6其它運算()和[]運算符“()”運算符常使用于表達式中,其作用是改變表達式的運算次序;也可在強制類型轉換運算或sizeof運算中使用,另外還可用于函數的參數表?!癧]”被稱為下標運算符,用于數組的說明及數組元素的下標表示。1103.6其它運算()和[]運算符“()”1113.6其它運算*和&運算符“*”是指針運算符,其含義是訪問指針所指向的內容?!?”是地址運算符,其含義是取指定變量的地址。“*”和“&”運算符使用的一般形式為:*指針變量
&內存變量“*指針變量”的功能是訪問指針變量所指的內容,“&內存變量”的功能是取出指定內存變量的地址,例如:*pc&a1113.6其它運算*和&運算符“*”是指針運算112第3章數據類型與運算規則
數據與數據類型
C語言的基本數據類型算術運算與賦值運算關系運算與邏輯運算位運算其它運算混合運算及數據類型轉換112第3章數據類型與運算規則數據與數據類型1133.7混合運算及數據類型轉換
數據類型轉換是由C語言的編譯系統自動完成的,是一種“隱式的”自動類型轉換,這種“隱式的”類型轉換不會體現在C語言源程序中。但是,C語言程序設計人員必須了解這種自動轉換的規則及其結果,否則會引起對程序執行結果的誤解。1133.7混合運算及數據類型轉換數據類型轉換是由C語1143.7混合運算及數據類型轉換各類數值型數據間的混合運算:將不同數據類型先轉換成同一類型,然后進行運算。自動進行——隱式轉換強制進行——顯式轉換隱式轉換(算術轉換)低級類型向高級類型轉換規則方式1143.7混合運算及數據類型轉換各類數值型數據間的混合運1153.7混合運算及數據類型轉換doublefloatlongunsignedintchar精度高精度低2.0+1/2;表達式的值?2.0
例:1153.7混合運算及數據類型轉換doublefloatl1163.7混合運算及數據類型轉換
intdouble已知:inti;longe;floatf;doubled;
f=10+‘a’+i*f-d/e
doublef的類型?
例:注意:運算過程中的類型轉換不是變量本身數據類型的轉換doubledoublefloat1163.7混合運算及數據類型轉換intdouble已1173.7混合運算及數據類型轉換強制類型轉換(類型標識符)表達式(int)(10+’a’+i*f-d/e)將該結果強制轉換為整型還可以賦值轉換,輸出轉換等轉換形式:1173.7混合運算及數據類型轉換強制類型轉換(類型標識符118main(){floatx,y,a,b,c;a=123456789.1234567;b=123.1234567;c=12345.123456789;x=111111222222.111;y=222222333333.222;printf("%f,%e\n",x+y,x+y);printf("%f,%f,%f\n",a,b,c);printf("%g\n",x+y);printf("%g,%g,%e\n",a,b,c);getch();}118main()數據類型與運算規則數據類型與運算規則120C語言程序設計-教學內容一C語言程序設計概述(第1、2章)二數據類型與運算規則(第3章)三順序結構程序設計(第4章)四選擇結構(第5章)五循環結構(第6章)七函數(第8章)六數組(第7章)八指針(第9章)九結構(第10章)十文件(第11章)語言規則程序流程數據結構——自學——基礎——重點,難1C語言程序設計-教學內容一C語言程序設計概述(第1、121第3章數據類型與運算規則本章要點數據的描述規則數據的操作規則2第3章數據類型與運算規則本章要點122第3章數據類型與運算規則
數據與數據類型
C語言的基本數據類型算術運算與賦值運算關系運算與邏輯運算位運算其它運算混合運算及數據類型轉換數據的描述規則數據的運算規則3第3章數據類型與運算規則數據與數據類型數據的數據的1233.1數據與數據類型引入什么是語言規則,為什么要用語言規則?
常量變量運算符表達式函數我們人能明白的、用自然語言和數學語言描述的問題→計算機能明白的、C語言語法規則描述的問題表達式常量變量函數程序設計語言的基本規則包括:43.1數據與數據類型引入常量我們人能明白的、用自然語言1243.1數據與數據類型問題常量3、5和3.6的處理是否相同?變量x如何表示?如何存放?計算機如何知道3和5之間的關系?如何輸入?如何存放?計算機如何識別“=”?運算結果放在哪里?計算機完成該計算,首先要解決數據的輸入和存放問題53.1數據與數據類型問題計算機完成該計算,首先要解決數據1253.1數據與數據類型程序的任務是對數據進行處理,數據是程序處理的對象,而運算符是施加給這些數據的操作。數據和運算符是表達式的基本元素。數據的存儲數據的操作程序63.1數據與數據類型數據的存儲程序1263.1數據與數據類型C語言中的數據類型 整數型int
基本類型 實數型float,double
字符型char
指針類型 數據類型 數組型 構造類型 結構型struct
聯合型union
枚舉型enum
空類型void73.1數據與數據類型C語言中的數據類型127第3章數據類型與運算規則
數據與數據類型
C語言的基本數據類型算術運算與賦值運算關系運算與邏輯運算位運算其它運算混合運算及數據類型轉換8第3章數據類型與運算規則數據與數據類型1283.2C語言的基本數據類型本節結構常量字符常量數值常量計算機語言表示數據的基本形式實型常量整型常量字符常量字符串常量變量字符變量數值變量實型變量整型變量指針變量整型實型字符型93.2C語言的基本數據類型本節結構常量字符常量數值常量計1293.2C語言的基本數據類型計算機語言表示數據的基本形式常量——程序運行中,值保持不變的量常量的表示方法
整型100,125,-100,0
實型3.14,0.125,-3.789
字符型‘a’,‘b’,‘2’
字符串“a”,“ab”,“1232”103.2C語言的基本數據類型計算機語言表示數據的基本形式1303.2C語言的基本數據類型計算機語言表示數據的基本形式符號常量——用來表示常量的標識符例:已知圓半徑r,求圓周長c和面積s的值。
#definePI3.1416 intmain(){ floatr,c,s; scanf("%f",&r); c=2*PI*r;/*
編譯時用3.1416替換PI*/ s=PI*r*r; /*編譯時用3.1416替換PI*/ printf("c=%6.2f,s=%6.2f\n",c,s); }#include<stdio.h>#include…#define….預處理命令113.2C語言的基本數據類型計算機語言表示數據的基本形式1313.2C語言的基本數據類型計算機語言表示數據的基本形式例:#defineSAN2+1
如果x=SAN*SAN,x=?
x=5 x=2+1*2+1=5123.2C語言的基本數據類型計算機語言表示數據的基本形式1323.2C語言的基本數據類型計算機語言表示數據的基本形式變量——程序運行時,值可以改變的量有關變量的規定:變量通過變量名標識,變量名和內存中的存儲單元相對應。編寫程序時通過變量名來存、取存儲單元;變量必須先定義(說明),再賦值,再使用。133.2C語言的基本數據類型計算機語言表示數據的基本形式133553.2C語言的基本數據類型計算機語言表示數據的基本形式變量——程序運行時,值可以改變的量內存變量a1000H1001H1002H25612常量不占用內存空間?。?4553.2C語言的基本數據類型計算機語言表示數據的基本1343.2C語言的基本數據類型計算機語言表示數據的基本形式變量的定義——變量是以標識符的形式來表示類型的。在C語言中,用類型說明語句對變量進行定義,其形式如下: 類型說明符變量名表;inta,b;/*說明a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學校日常微管理制度
- 學校運動區管理制度
- 學生接送車管理制度
- 孵化廠銷售管理制度
- 安全及消防管理制度
- 安全運行與管理制度
- 實名制入井管理制度
- 實驗室培訓管理制度
- 客戶為中心管理制度
- 宣講員聘用管理制度
- 2025年各地低空經濟政策匯編
- 搬運重物安全培訓
- 2025年共青團入團考試測試題庫及答案
- 磷酸鐵及磷酸鐵鋰異物防控管理
- 《宮頸癌防治知識普及》課件
- 施工單位關于工作安排的聯絡函
- 2024年度海南省國家電網招聘之電網計算機通關提分題庫(考點梳理)
- (新版)水利水電工程施工企業“三類人員”安全生產考核題庫-(單選多選題庫)
- 醫療器械物流高效配送與存儲方案
- 部編版小學二年級下冊語文全冊教案
- 《慢性病健康教育》課件
評論
0/150
提交評論