C语言 数据类型(就做个笔记总结)
1,進制
(1)十進制
0--9組成,首不能為0
43
(2)八進制
0--7組成,首必須是0.
021
(3)16進制
0--9組成,a--f 或A--F組成。 首必須為0x或0X
0X23?
2,輸入格式
(1)輸入寬度,整型
int a;
scanf("%5d",&a);
printf("%d",a);
輸入12345678 輸出12345scanf("%3d%4d",&a,&b);
printf("a=%d %b=d",a,b);
輸入12345678
輸出 a=123 b=4567
?(2)浮點型
scanf("%3.2f",&a);? ? //是非法的。不能企圖用此語句輸入小數為2位的實數
(3)字符型? ?printf()? scanf()
?*一次也只能輸入/出一個
(4)long long
long long :?scanf("%lld",&a);?printf("%lld",a);
1. 輸入之間有空格
#include <stdio.h>
int main(){char a,b,c;scanf("%c%c%c",&a,&b,&c);printf("%c#%c#%c#",a,b,c);return 0;
}輸入asd
輸出a#s#d#輸入a s d
輸出a# #s#
(2)
#include <stdio.h>
int main(){char a,b,c;scanf("%c %c %c",&a,&b,&c);printf("%c#%c#%c#",a,b,c);return 0;
}輸入a s d
輸出a#s#d#
?3,類型轉換
(1)賦值轉換
將賦值號右側的表達式的類型轉換為左側變量的類型
#include <stdio.h>
int main(){int a;a=2.3;printf("%d",a);return 0;
}輸出2
(2)強制轉換
(類型名) 表達式?
(int)3.8
double i=3.2;
(int)i; //輸出3表達式(int)i 類型為整型,但是i的類型認為double
?千萬不要寫成? int(3.8)
它是運算符,運算等級與? ++? --? 一樣
(int)3.8+1.3? //結果為4.3
(int)(3.8+1.3)? //結果為5
4,表達式
(1)優先級順序
?單目運算符,賦值運算符,三目運算符結合方式從右往左。其余的都是從左往右
從左往右:操作數先與左邊的運算符結合
從右往左:操作數先與右邊的運算符結合
(2)算術表達式
1.自增/減運算符? ? ? ++? ?--? ? ?(從右往左)
操作數只能是變量,不可以是常量、表達式
count++;
1++;//不可以
(i+j)--; //不可以
-i++? ?---->? ? ? -(i++)?
2.算術運算符(從左往右)
?3*5%3? ?---->? ? ?(3*5)%3
(3)賦值表達式(從右往左)
a=b=3? ?--->? a=(b=3)
(4)關系表達式
3<=x<=5? ? ? -------->? ? ? ?(3<=x)<=5
d=a+b>c? ? ? --------->? ? ?d=[(a+b)>c]? ? ? //先把右邊式子運算完畢,把結果賦予d
b-1==a!=c? ? --------->? ? ?[(b-1)==a]!=c?
(5)邏輯表達式(注意短路)
a||3+10&&2? ? ------>? ?a||[(3+10)&&2]? ? //從左往右計算,先算a,再判斷大括號
!x==2? ? ? ?-------->? ? (!x)==2?
ch=getchar()!='\n'? ? ? ------------>? ? ch=[getchar()!='\n']
(6)條件表達式(從右往左)
a>b?a:c>d?c:d? ? ? ?------------>? ? ? ? ? ?[a>b?a:(c>d?c:d)]?
(7)逗號表達式(從左往右)優先級最低
?一般形式:
表達式1,表達式2,.......,表達式n先計算表達式1,再計算2,......,最后計算表達式n的值。
逗號表達式的值為n,表達式n的類型為逗號表達式的類型
a=1,b=2,c=a+b;
此表達式類型由c=a+b的值決定?
PS:
#include <stdio.h>
int main(){int a;a=!(-1);printf("%d",a);return 0;
}//輸出為0
總結
以上是生活随笔為你收集整理的C语言 数据类型(就做个笔记总结)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求写开头的成语接龙!
- 下一篇: C语言---二分法搜索