㈠ c語言表達式 10&20 的值是什麼
1、數據類型、運算符與表達式,2.1 預備知識; 2.2 C語言的數據類型; 2.3 常量和變數; 2.4 整型數據; 2.5 實型數據; 2.6 字元型數據; 2.7 算術運算與算術表達式; 2.8 賦值運算與賦值表達式; 2.9 逗號運算符和逗號表達式;,2.1 預備知識,計算機中數的表示及進制轉換 二進制、八進制、十進制、十六進制 各種進制之間的轉換,各種進制之間的轉換(整數) 二進制、八進制、十六進制轉換成十進制 方法:按權相加,十進制轉換成二進制、八進制、十六進制 原理:,方法:連續除以基,從低到高記錄余數,直至商為0,二進制與八進制之間的轉換 二進制轉換成八進制:從右向左,每3。
2、位一組(不足3位左補0),轉換成八進制 八進制轉換成二進制:用3位二進制數代替每一位八進制數,例 (1101001)2=(001,101,001)2=(151)8,例 (246)8=(010,100,110)2=(10100110)2,000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7,二進制與十六進制之間的轉換 二進制轉換成十六進制:從右向左,每4位一組(不足4位左補0),轉換成十六進制 十六進制轉換成二進制:用4位二進制數代替每一位十六進制數,例 (11010101111101)2=(0011,0101,0111,1101)2=(357D)16,。
3、例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)2,0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F,位元組和位 內存以位元組為單元組成 每個位元組有一個地址 一個位元組一般由8個二進制位組成 每個二進位的值是0或1,數值的表示方法原碼、反碼和補碼 原碼:最高位為符號位,其餘各位為數值本身的絕對值 反碼: 正數:反碼與原碼相同 負數:符號位為1,其餘位對原碼取反 補碼: 正數:。
4、原碼、反碼、補碼相同 負數:最高位為1,其餘位為原碼取反,再對整個數加1,負數補碼轉換成十進制數:最高位不動,其餘位取反加1,例 補碼:11111001 取反:10000110 加1: 10000111=-7,2.2 數據類型 數據類型總表,數據類型決定: 1. 數據占內存位元組數 2. 數據取值范圍 3. 其上可進行的操作,2.3 常量和變數,2.3.1 常量 1.常量的概念 在程序運行過程中,其值不能被改變的量稱為常量。 2.常量的分類 (1)整型常量 例:123 (2)實型常量 例:4.56 (3)字元常量 例:a (4)符號常量 例:PI,2.3.2 變數 1.變數的概念 在程序運行過程。
5、中,其值可以被改變的量稱為變數。 2.變數的兩個要素 (1)變數名。每個變數都必須有一個名字變數名,變數命名遵循標識符命名規則。 (2)變數值。在程序運行過程中,變數值存儲在內存中。在程序中,通過變數名來引用變數的值。,.標識符命名規則 有效字元:只能由字母、數字和下劃線組成,且以字母或下劃線開頭。 有效長度:隨系統而異,但至少前個字元有效。如果超長,則超長部分被舍棄。 例如:由於student_name和student_number的前個字元相同,有的系統認為這兩個變數,是一回事而不加區別。 在TC V2.0中,變數名(標識符)的有效長度為個字元,預設值為。,C語言的關鍵字不能用作變數名。 。
6、注意:C語言對英文字母的大小敏感,即同一字母的大小寫,被認為是兩個不同的字元。 習慣上,變數名和函數名中的英文字母用小寫,以增加可讀性。 例:在C語言中,變數名total與變數名TOTAL、ToTaL、tOtAl等是同一個變數嗎?,標識符命名的良好習慣見名知意: 所謂「見名知意」是指,通過變數名就知道變數值的含義。通常應選擇能表示數據含義的英文單詞(或縮寫)作變數名,或漢語拼音字頭作變數名。 例如,name/xm(姓名)、sex/xb(性別)、age/nl(年齡)、salary/gz(工資)。,4.變數的定義與初始化 在語言中,要求對所有用到的變數,必須先定義、後使用;且稱在定義變數的同時進行。
7、賦初值的操作為變數初始化。,2.4 整型數據,2.4.1 整型常量 整型常量即整常數,在語言中可用三種形式表示: (1)十進制。例如10、36。 (2)八進制(以數字開頭)。例如012。 (3)十六進制(以數字+小寫字母x開頭)。例如0 x36。,2.4.2 整型變數 1.分類 根據佔用內存位元組數的不同,整型變數又分為類: (1)基本整型(類型關鍵字為int)。 (2)短整型(類型關鍵字為short int)。 (3)長整型(類型關鍵字為long int)。 (4)無符號整型。無符號型又分為無符號基本整型(unsigned int)、無符號短整型(unsigned short)和無符號長整型(。
8、unsigned long)三種,只能用來存儲無符號整數。,2.佔用內存位元組數與值域 上述各類型整型變數佔用的內存位元組數,隨系統而異。在16位操作系統中,一般用位元組表示一個int型變數,且long型(位元組)int型(位元組)short型(位元組)。 顯然,不同類型的整型變數,其值域不同。 例:PC機中的一個int型變數,其值域為-215(215-1),即-3276832767;一個unsigned型變數的值域為:0(216-1),即065535。 可用sizeof(類型標識符)測量。,如何定義整型變數? int i;/*定義為整型變數*/ i10; /*給i賦以整數10*/ int a10; sh。
9、ort b30; long c 20; unsigned int number20;,例:,#define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(total=%d,total); ,2.5 實型數據,2.5.1 實型變數 語言的實型變數,分為兩種: (1)單精度型。類型關鍵字為float,一般佔位元組(位)、提供位有效數字。 (2)雙精度型。類型關鍵字為double,一般占個位元組、提供1516位有效數字。,例 float a; a=111111.111; /* a=111111.1*/ double b; b。
10、=111111.111; /* b=111111.111*/,2.5.2 實型常量 實型常量即實數,在語言中又稱浮點數,其值有兩種表達形式: (1)十進制形式。例如3.14、9.8。 (2)指數形式: (e或E之前必須有數字;指數必須為整數)如12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5,例:,#define PRICE 30.52 main() float num,total; num=10.89; total=num*PRICE; printf(「total=%f」, total); ,2.6 字元型數據,2.6.1 字元常量 字元常量的定義 用一對單引號括。
11、起來的單個字元,稱為字元常量。 例如,如 a A ? n 101 字元常量的值:該字元的ASCII碼值 如 A65, a97, 048 , n10 轉義字元 反斜線後面跟一個字元或一個代碼值表示 如 101 -A 012 -n 376 - x61 -a 60 -0 483 -(),例: main() printf(「 ab ct derftgn」); printf(「htibbj k」); ,例 轉義字元舉例 main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C); 。
12、,2.6.2 字元變數 字元變數的類型關鍵字為char,一般佔用1位元組內存單元。 變數值的存儲字元變數用來存儲字元常量。將一個字元常量存儲到一個字元變數中,實際上是將該字元的ASCII碼值(無符號整數)存儲到內存單元中。 例如, char ch1, ch2; /*定義兩個字元變數:ch1,ch2*/ ch1=a; ch2=b; /*給字元變數賦值*/,一個字元型數據,既可以字元形式輸出,也可以整數形式輸出。,main() char ch1,ch2; ch1=a; ch2=b; printf(「ch1=%c,ch2=%cn」,ch1,ch2); printf(「ch1=%d,ch2=%dn」,c。
13、h1,ch2); ,main() char ch1,ch2; ch1=a; ch2=B; /*字母的大小寫轉換*/ printf(「ch1=%c,ch2=%cn」,ch1-32,ch2+32); /*用字元形式輸出一個大於256的數值*/ printf(ch1+200=%dn, ch1+200); printf(ch1+200=%cn, ch1+200); printf(ch1+256=%dn, ch1+256); printf(ch1+256=%cn, ch1+256); ,字元常量與字元串常量不同,字元串常量 定義:用雙引號(「」)括起來的字元序列 存儲:每個字元串尾自動加一個 0 作為字。
14、符串結束標志,例: char ch; ch=「A」;,不同類型數據間的轉換,除上面講的自動轉換外,還有強制轉換。 例如, (double)a (等價於(double)(a) /*將變數a的值轉換成double型*/ (int)(x + y) /*將x+y的結果轉換成int型*/ (float)5 / 2(等價於(float)(5)/2) /*將5轉換成實型,再除以2(=2.5)*/ (float)(5 / 2) /*將5整除2的結果(2)轉換成實型(2.0)*/,2.7 算術運算與算術表達式,1.五種基本算術運算符 +、-、*、/、% (1)關於除法運算/ C語言規定:兩個整數相除,其商為整數。
15、,小數部分被舍棄。例如,5 / 2 = 2。 (2)關於求余數運算 要求兩側的操作數均為整型數據,否則出錯。,2.運算符的優先順序與結合性 1)按運算符的優先順序高低次序執行。例如,先乘除後加減。 2)如果在一個運算對象(或稱操作數)兩側的運算符的優先順序相同,則按語言規定的結合方向(結合性)進行。 例如,算術運算符的結合方向是「自左至右」,即:在執行「a b + c」時,變數b先與減號結合,執行「a - b」;然後再執行加c的運算。,3.自增、自減運算符+ - 作用:使變數值加1或減1 種類: 前置 +i, -i (先執行i+1或i-1,再使用i值) 後置 i+,i- (先使用i值,再執行i+1或。
16、i-1),例 j=3; k=+j; j=3; k=j+; j=3; printf(「%d」,+j); j=3; printf(「%d」,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,說明: + - 不能用於常量和表達式,如5+,(a+b)+ 優先順序: + - -* / % -+ -,2.8 賦值運算與賦值表達式,1.賦值運算 賦值符號「=」就是賦值運算符,它的作用是將一個表達式的值賦給一個變數。,例 a=3; d=func(); c=d+2; y = (float)5 /。
17、 2;,2.復合賦值運算 C語言規定的10種復合賦值運算符如下: +=,-=,*=,/=,%=; a+b=3;,例 float f; int i; i=10; f=i; 則 f=10.0,例 int i; i=2.56; /結果i=2;,例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),/表達式值為5,a,b,c值為5,/ b=5;a=5,/表達式值11,c=6,a=11,/表達式值10,a=10,b=4,c=6,/表達式值5,a=5,b=10,c=2,2.9 逗號運算符和逗號表達式,形式:表達式1,表達式2,表達式n 結合性:從左向右 逗號表達式的值:等於表達式n的值 用途:常用於循環for語句中,例 a=3*5,a*4 a=3*5,a*4,a+5 例 x=(a=3,6*3) x=a=3,6*a 例 a=1;b=2;c=3; printf(「%d,%d,%d」,a,b,c); printf(「%d,%d,%d」,(a,b,c),b,c);,/a=15,表達式值60,/a=15,表達式值20,/賦值表達式,表達式值18,x=18,/逗號表達式,表達式值18,x=3,/1,2,3,/3,2,3。
㈡ !2等於多少!c語言
首先我們要理解的是%在c語言中是什麼運算。在c語言中,%指的是取余數。
有了以上知識作為鋪墊,我們來看一下1%2結果到底是什麼。
1除以2,商是0,余數是1,所以1%2的結果是1。
拓展資料:
關於「/」的「%」的總結
除法運算符「/」。二元運算符,具有左結合性。參與運算的量均為整型時,結果為整型,捨去小數。如果運算量中有一個為實型,結果為雙精度實型。
求余運算符「%」,二元運算符,具有左結合性。參與運算的量均為整型。
求余運算的結果等於兩個數相除後的余數。
「%」取模運算符還有一些小的應用,例如:
①當你想要通過rand()獲得隨機數時,rand()%100;產生0-99的隨機數。
假如要產生16-59之間的數,可以這樣寫:rand()%44+16(這里44由59-16+1得到)。
rand()%44 即可獲得0-43的隨機數,再加上16即可得到16-59的隨機數了;
②除了第一點以外,「%」運算還通常用於N進制的轉換。例如:
如果是二進制轉換,那麼就可以通過/與%的結合使用則可以得到轉換之後的二進制數了(其實就是短除法)
當原數被除至剩餘0時,它的上一次模數就是最高位進制數。
30(10)->11110(2)/與%的結合使用通常都可用於獲得最低位數又或者獲得所需的某位數。例如:
「/」通常可以去掉尾數,而「%」通常都用於獲得尾數。
㈢ c語言中10個2相成用循環怎麼表示
int i,s=1;
for(i=0;i<10;i++)
s=s*2;
a是什麼?
㈣ c語言中,1.0加上2等於
前者兩個都是整型,故運算結果是整型,結果是0;後者由於其中一個是浮點,另外一個也會在運算是被自動轉換為浮點數,運算結果是浮點數,是0.5
㈤ 為什麼c語言中-10>>2+3的值為-1
1、做這個題,首先要知道,整數在計算機中是用補碼來存放的。
以一個位元組整數為例:
-10 的原碼為 10001010 第一位是符號位(1表示負數,0表示正數),其餘位表示數值
-10 的反碼為11110101 符號位不動,其餘位按位取反
-10的補碼=反碼+1= 1 1110101 +1 = 11110110
2、>>運算符的意義
>>運算符是位運算符,是個雙目運算符(雙目運算有左右兩個操作數), >>表示將左操作數右移,移動的位數由右操作數確定。
運算規則:右移運算是將一個二進制位的操作數按指定移動的位數向右移動,移出位被丟棄,左邊移出的空位或者一律補0,或者補符號位,這由不同的機器而定。(一般是補符號位)
3、運算符優先順序(這個是規定)
根據優先順序規定,可知+運算符高於>>運算符,要先算2+3=5,再算-10 >> 5 ;
4、計算-10>>2+3
-10>>2+3=-10>>5 =11110110 >>5 = 11111111 移出位丟棄,高位補符號位1
補碼 11111111轉換為原碼(實際數值) 為 -1
先得到反碼:11111111-1=11111110
再得到原碼:10000001 即:-1
所以,-10>>2+3 = -1
PS:為了避免優先順序記不清楚,在編程時,應盡可能的加上括弧,以提高程序的可讀性,以免出現不應該的低級錯誤,如:-10>>2+3寫成-10>>(2+3)會讓人更容易理解一些。
㈥ 求大神整理c語言指令符號及用法大全。
編譯指令
編譯指令
說明
#include
包含另一個文件
#define
定義一個宏(macro)或是常量
#undef
取消一個宏常量的定義
#asm和#endasm
在程序中加入匯編語言的程序
#ifdef、#ifndef、#else、#endif
用於條件式的編譯
註解://—單行註解;
基本數據類型 (int,float,double,char,void)
數據類型
類型說明
長度(位)
數據長度
bit
位
1
0,1
char
字元
8
—128~127
unsigned char
無符號字元
8
0~255
signed char
有符號字元
8
—128~127
int
整型
16
—32768~32767
short int
短整型
16
—32768~32767
unsigned int
無符號整型
16
0~65535
signed int
有符號整型
16
—32768~32767
long int
長整型
32
—2147483648~2147483647
unsigned long int
無符號長整型
32
0~4294967295
signed long int
有符號長整形
32
—2147483648~2147483647
float
浮點數(實數)
32
0.175e-38~0.402e38
double
雙精度浮點
32
0.175e-38~0.402e38
void
空
0
沒任何數據
用戶自定義數據類型格式
typedef struct{
數據類型 變數序列1;
數據類型 變數序列1;
...
}自定義數據類型的名稱;
保留字
_at_,alien,bdata,break,bit,case,char,code,compact,const,continue,data,
default,do,double,far,else,enum,extern,float,for,goto,if,funcused,idata,int,
inline,interrupt,large,long,pdata,_priority_,reentrant,return,sbit,sfr,sfr16,
short,sigend,sizeof,small,static,struct,switchc_task_,typedef,using,union,
unsigned,void,volatile,while,xdata
常量表示法
常數
規則
範例
十進制
一般十進制格式
1234567890
二進制
開頭加上0b
0b00001110
八進制
開頭加上O
O0123
十六進制
開頭加上0x
0xFF45
無符號整數常量
結尾加上U
30000U
長整數常量
結尾加上L
299L
無符號長整數常量
結尾加上UL
327800UL
浮點數的常量
結尾加上F
4.234F
字元常量
以單引號括起來
『a』
字元串常量
以雙引號括起來
「hello」
-----------------------------------------------------運算符-----------------------------------------------------
算術運算
運算符
說明
範例
執行結果
+
加
c=a+b;
c 等於10
—
減
d=a—b;
d 等於6
*
乘
e=a*b;
e 等於16
/
除
f=a/b;
f 等於4
%
取余數
g=a%b;
g 等於0
++
加1
c++;相當於c=c+1;
c 等於11
——
減1
d——;相當於d=d—1;
d 等於5
=
等於
a=8;
設置a等於8
+=
先相加在等於
e+=5;相當於e=e+5;
e 等於21
—=
先相減在等於
f—=5;相當於f=f—5;
f 等於—1
*=
先相乘在等於
b*=5;相當於b=b*5;
b 等於0
/=
先相除在等於
a/=5;相當於a=a/5;
a 等於1
%=
先取余數在等於
a%=5;相當於a=a%5;
a 等於3
※假設a等於8,b等於2
比較運算
運算符
說明
範例
執行結果
==
等於
a==5
F
!=
不等於
a!=5
T
<<o:p>
小於
a<5
F
>
大於
a>5
T
<=
小於等於
a<=5
F
>=
大於等於
a>=5
T
※比較運算結果是個布爾值既TRUE(真值)或FALSE(假值)。假設a等於8
邏輯運算
運算符
說明
範例
執行結果
&&
AND
(a>5)&&(a<10)
T
||
OR
(a<5)||(a>10)
F
!
NOT
!(a>10)
T
※邏輯運算結果是個布爾值既TRUE(真值)或FALSE(假值)。假設a等於8
位邏輯運算
運算符
說明
範例
執行結果
&
AND
a&0x01
a等於1
|
OR
a|0x80
a等於0x85
~
NOT
~a
a等於0xFA
^
XOR
a^0xFF
a等於0xFA
<<
左移
a<<1
a等於0x0A
>>
右移
a>>1
a等於0x0A
※假設a等於5
----------------------------------------------------控制命令---------------------------------------------------
if語句
if(條件) 語句1;
else 語句2;
例:if(d==4) d=0; //如果d等於4就設置d等於0
else d++; //否則就將d加1
if(ticks==0) { //如果ticks等於0
ticks=1000; //ticks 設置成1000
counter[0]++; //counter[0]加1
}
嵌套if語句
例:if(counter[0]==10) {
counter[1]++;
counter[0]=0;
if(counter[1]==10) {
counter[2]++;
counter[1]=0;
}
}
switch語句
switch (變數) {
case 常量1:語句1; break;
case 常量2:語句2; break;
case 常量3:語句3; break;
......
default ; 語句n;
}
for循環
for (初值,條件,變化值) 語句;
例:for(i=0;i<10;i++) x=x+i;
for(i=1;i<10,i++)
for(j=1;j<10,j++)
printf(「%d %d」,i,j);
無窮循環:
for( ; ; );
while循環
while (條件) 語句;
例:while (ch!=!』A』) ch=getche();
無窮循環:
while(1);
do/while循環
do {
語句;
...
} while(條件);
例:do {
ch=getche();
} while (ch!=」A」);
goto語句
loop1:
x++;
if(x<100) goto loop1;
----------------------------------------------------指針和函數------------------------------------------------
指針的定義
數據類型 *指針變數的名字;
例: char *p;
int *x;
指針與數組
例: char filename[80];
char *p;
p=filename; //指針p存放filename的開始地址
int x[5]={1,2,3,4,5};
int *p,sum,i;
p=x; //指針p存放數組x的開始地址
for(i=0;i<5;i++)
sum=sum+p[i]; //p[i]相當於x[i]
指針的運算
1.針變數前面加上*號就是取得指針所指向位置的內容。
例:int x[5]={1,2,3,4,5};
int *p;
p=x; //指針p存放數組x的開始地址
*p=10; //相當於設置x[0]等於10
2.變數前面加上&符號,可以取得一個變數的位置。
例:int x,y;
int *p;
p=&x; //指針p存放x的地址,相當於p是指向x 的指針
*p=1; //相當於設置x等於1
3.&符號也可以加在數組的前面
例:int x[5];
int *p;
p=&x[2]; //指針p存放x[2]的地址,相當於p是指向x[2]的指針
*p=50; //相當於設置x[2]等於50
函數
函數類型 函數名稱(參數序列);
參數說明
{
函數的主體
}
例:void delay (void) { //不返回任何數據的函數
unsigned char i,j; //沒有任何參數的函數
for(i=0,i<255,i++)
for(j=0,j<255,j++);
}
main()
{
...
delay(); //調用函數
}
例:unsigned char sum(unsigned chat a,unsigned chat b)
{
unsigned chat x;
check_GLCD_busyflag(); //函數中可以調用另一個函數
x=a+b;
return x; //return會返回x的數據
}
中斷服務函數
void 中斷服務程序的名稱(void) interrupt 中斷號碼using 寄存器組號碼
{
中斷服務子程序主體
}
中斷號碼
#define IE0_VECTOR 0 //0x03
#define TF0_VECTOR 1 //0x0B
#define IE1_VECTOR 2 //0x13
#define TF1_VECTOR 3 //0x1B
#define SIO_VECTOR 4 //0x23
對於S51有定時器2
#define TF2_VECTOR 5 //0x2B
例:static void xint0_isr(void) interrupt IE0_VECTOR(或0) using 1
{
unsigned char i,j=0xFF;
for(i=0,i<16,i++)
{
j++;
P1=j; //將數值輸出到P1口
delay_4isr();
}
}
-----------------------------------------------------匯編語言--------------------------------------------------
在C中加入匯編語言
例:void delay100us()
{
#pragma asm
mov r7,#1
more: mov r3,#48
djnz r3,$
djnz r7,more
#pragma endasm
}
----------------------------------------------------宏(macro)----------------------------------------------
宏的定義
%*define (macro名稱) (macro的指令)
例:%*define (write_1) (
setb DI
serb SK
clr SK
)
#define 宏的名稱 宏的指令
例:#define uchar unsigned char
C語言中的符號總結
運算符的種類C語言的運算符可分為以下幾類;
1. 算術運算符
用於各類數值運算,包括加減乘除求余自增自減共七種運算
{ ( + ) ,( - ),(* ) ,( / ) ,( % ),( ++ ),(-- )}。
2. 關系運算符
用於比較運算,包括大於(>),小於(<</span>),等於(==),大於等於(>=),
小於等於(<=),不等於(!=)共六種。
3.邏輯運算符
用於邏輯運算,包括與(&&)或(||)非(!)三種.
4.位操作運算符
參與運算的量,按二進制位進行運算,包括:
位與(&),位或(|),位非(~),為異或(^),左移(<<),右移(>>)共六種。
5.賦值運算符
用於賦值運算,分為:
簡單賦值(=)
復合算術賦值(+=,-=,*=,/=,%=)
復合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。
6.條件運算符
這是一個三目運算符,用於條件求值(?:)。
7.逗號運算符
用於把若干表達式組合成一個表達式(,)。
8.指針運算符
用於取內容(*)和取地址(&)兩種運算。
9.求位元組數運算符
用於計算數據類型所佔用的位元組數(sizeof)。
10.特殊運算符
有括弧(),下標[],成員(→, .)
1.C的數據類型
基本類型,構造類型,指針類型,空類型
2.基本類型的分類及特點
類型說明符 位元組 數值范圍
字元型char 1 C字元集
基本整型int 2 -32768~32767
短整型short int 2 -32768~32767
長整型 long int 4 -214783648~214783647
無符號型 unsigned 2 0~65535
無符號長整型 unsigned long 4 0~4294967295
單精度實型 float 4 3/4E-38~3/4E+38
雙精度實型 double 8 1/7E-308~1/7E+308
3.常量後綴
L或l 長整型
U或u 無符號數
F或f 浮點數
4.常量類型
整數,長整數,無符號數,浮點數,字元,字元串,符號常數,轉義字元。
5.數據類型轉換
a自動轉換
在不同類型數據的混合運算中,由系統自動實現轉換, 由少位元組類型向多位元組類型轉換。 不同類型的量相互賦值時也由系統自動進行轉換,把賦值號右邊的類型轉換為左邊的類型。
b強制轉換
由強制轉換運算符完成轉換。
6.運算符優先順序和結合性
一般而言,單目運算符優先順序較高,賦值運算符優先順序低。 算術運算符優先順序較高,關系和邏輯運算符優先順序較低。 多數運算符具有左結合性,單目運算符、三目運算符、 賦值
7.表達式
表達式是由運算符連接常量、變數、函數所組成的式子。 每個表達式都有一個值和類型。 表達式求值按運算符的優先順序和結合性所規定的順序進行。
表示輸出類型的格式字元 格式字元意義
d 以十進制形式輸出帶符號整數(正數不輸出符號)
o 以八進制形式輸出無符號整數(不輸出前綴O)
x 以十六進制形式輸出無符號整數(不輸出前綴OX)
u 以十進制形式輸出無符號整數
f 以小數形式輸出單、雙精度實數
e 以指數形式輸出單、雙精度實數
g 以%f%e中較短的輸出寬度輸出單、雙精度實數
c 輸出單個字元
s 輸出字元串
標志字元為-、+、#、空格四種,其意義下表所示:
標志格式字元 標 志 意 義
- 結果左對齊,右邊填空格
+ 輸出符號(正號或負號)空格輸出值為正時冠以空格,為負時冠以負號
# 對c,s,d,u類無影響;對o類, 在輸出時加前
綴o 對x類,在輸出時加前綴0x;對e,g,f 類當結果有小數時才給出小數點
格式字元串
格式字元串的一般形式為: %[*][輸入數據寬度][長度]類型 其中有方括弧[]的項為任選項。各項的意義如下:
1.類型
表示輸入數據的類型,其格式符和意義下表所示。
格式 字元意義
d 輸入十進制整數
o 輸入八進制整數
x 輸入十六進制整數
u 輸入無符號十進制整數
f或e 輸入實型數(用小數形式或指數形式)
c 輸入單個字元
s 輸入字元串
轉義字元
轉義字元是一種特殊的字元常量。轉義字元以反斜線」\」開頭,後跟一個或幾個字元。轉義字元具有特定的含義,不同於字元原有的意義,故稱「轉義」字元。例如,在前面各例題printf函數的格式串中用到的「\n」就是一個轉義字元,其意義是「回車換行」。轉義字元主要用來表示那些用一般字元不便於表示的控制代碼。
常用的轉義字元及其含義
轉義字元 轉義字元的意義
\n 回車換行
\t 橫向跳到下一製表位置
\v 豎向跳格
\b 退格
\r 回車
\f 走紙換頁
\\ 反斜線符」\」
\』 單引號符
\a 鳴鈴
\ddd 1~3位八進制數所代表的字元
\xhh 1~2位十六進制數所代表的字元
廣義地講,C語言字元集中的任何一個字元均可用轉義字元來表示。表2.2中的\ddd和\xhh正是為此而提出的。ddd和hh分別為八進制和十六進制的ASCII代碼。如\101表示字?quot;A」 ,\102表示字母」B」,\134表示反斜線,\XOA表示換行等。轉義字元的使用
在C語言中,對變數的存儲類型說明有以下四種:
auto 自動變數
register 寄存器變數
extern 外部變數
static 靜態變數
自動變數和寄存器變數屬於動態存儲方式, 外部變數和靜態變數屬於靜態存儲方式。在介紹了變數的存儲類型之後, 可以知道對一個變數的說明不僅應說明其數據類型,還應說明其存儲類型。 因此變數說明的完整形式應為: 存儲類型說明符 數據類型說明符 變數名,變數名…; 例如:
static int a,b; 說明a,b為靜態類型變數
auto char c1,c2; 說明c1,c2為自動字元變數
static int a[5]={1,2,3,4,5}; 說明a為靜整型數組
extern int x,y; 說明x,y為外部整型變數
與指針有關的各種說明和意義見下表。
int *p; p為指向整型量的指針變數
int *p[n]; p為指針數組,由n個指向整型量的指針元素組成。
int (*p)[n]; p為指向整型二維數組的指針變數,二維數組的列數為n
int *p() p為返回指針值的函數,該指針指向整型量
int (*p)() p為指向函數的指針,該函數返回整型量
int **p p為一個指向另一指針的指針變數,該指針指向一個整型量。
指針變數的賦值
p可以有以下兩種方式:
(1)指針變數初始化的方法 int a;
int *p=&a;
(2)賦值語句的方法 int a;
int *p;
p=&a;
(1)取地址運算符&
(2)取內容運算符*
㈦ 在c語言中2進制,10進制,8進制,16進制是什麼鬼我看了好幾天各種教程都沒說明清楚進制怎麼算的
二進制就是逢2進1,就是遇到往上增加到2時往高位增加1,比如一開始是0, 0+1 = 1, 1+1本來等於2的,但是此時應該往高位進1,低位清0,所以變成了10(讀做一零,不讀作十), 10加1 = 11, 11+1本來等於12,但是2應該往高位進1,變成20,此時高位的2也要往高位進1,所以變成100。其他進制也是類似的,比如十進制,最常見了,0加1,一直加加加到9,最後變成10(讀作十)。八進制類似, 0,一直加加加到7,再加1,本來變成8,但是應該往高位進1,所以變成了10(讀作一零)。十六進制類似,從0一直加加加到F(F相當於十五),再加1變成十六,此時應該往高位進1,低位清0,變成10(讀作一零)。從上面看,如果沒有指定是多少進制,10可能會被認為多種可能,所以一般在計算機中,會在數字末尾加字母區分是多少進制,10B代表是二進制的10,10O(字母O)代表八進制的10,10D代表是十進制的10, 10H代表十六進制的10。10H=16D=20O=10000B