ascii碼表
#includeint main()
}printf("\n\n***************===\n\n");
for(char ch1 = 'a';ch1 <= 'z';ch1++)
return 0;
}
48---0,57--9;
65---a,97--a;
for(char ch = 'a';ch <= 'z';ch++)
for(int i = 0;i <= 10;i++) //1-10 數值
for(char j = 48;j <= 48+9;j++) //第1組輸出的是asc碼
//%c輸出字元所對應的asc碼值
printf("---------------------------\n");
for(char k = '0';k <= '0'+9;k++)
本身已有乙個字元的意義,給他另外乙個別的意義。
字元語義被徵用,回歸本義
有新的需求能通過轉義實現新的功能。
printf("%d %d %d %d\n",'\n','\r','\t','\b');//對應的asc: 10 13 9 8
常量是程式中不可變的量,常以字面量(賦值的數),或者巨集的方式出現(#define pi 3.1415926)。
用途:賦值,運算。
常量的型別:
printf("sizeof(0) == %d sizeof(0.0) == %d \n",sizeof(0),sizeof(0.0));//sizeof(0) == 4 sizeof(0.0) == 8
不同型別的-1在記憶體中存放的補碼。
char ch = -1;//1111 1111
short sh = -1; //1111 1111 1111 1111
int in = -1;//1111 1111 1111 1111 1111 1111 1111 1111
1111 1111
十進位制:255(8,4,2,1計算)
十六進製制:0xff(4位剛好是十六進製制的一位)
八進位制:0377(3位剛好是八進位制的一位)
整型常量:10,8,16進製制數
實型:小數(.)
指數:123.45678=1.2345678e2科學計數法
1.字母e或者e前後必須有數字。2.字母e或者e後面的指數必須為整數,字母e或者e的前後及數字之間不得有空格。
字元常量:char a = 'a';
字串常量:char aa = "aaa";
printf("格式字串",[輸出列表]);//print:列印format:格式
%d:十進位制輸出
%x:十六進製制輸出
%o:八進位制資料輸出
%f:實行資料輸出
%c:字元型輸出
int aa = 0x66;
printf("%#d",aa);
printf("%#x",aa);
printf("%o",aa);//aa並沒有變只是以進製的形式輸出
printf 中至少有兩類:控制格式,飛哥是字元。
格式字元要求跟輸出一一對應,非格式字元原樣輸出,其作用是原樣輸出,提示,顯示作用。
格式字串:
"%[標誌][輸出最小寬度][.精度][長度]型別"//可以省略
當實際寬度大於所給的寬度,按照實際輸出。
標誌:-(左對齊),+(預設,右對齊)0(不夠補0)#(用於表示進製)
scanf:鍵盤輸入
scanf("%d%d",&d,&d);//天然的間隔:tab enter(結束) 空格,格式串和被輸入的變數一一對應。非格式串,需要原樣輸入。
注意:%c在scanf,中會有點問題,在空格的處理上有點問題。
char a = 'a';
char b = 'b';
scanf("%c%c",&a,&b);//輸入格式字串中本身有三種間隔,超過兩個%c在輸入過程中獲取到了本身的空格。
scanf("%c %c",&a,&b);//解決了,還是有麻煩,空格在中間還可以。(但是輸入的時候很多空格也可以)
getchar,putchar;
char ch;
ch = getchar();//從鍵盤輸入乙個字元
putchar(ch);//輸出乙個字元
putchar(10);//回車,回車的ascii是10
不需要認為參與而產生的預設轉換。
1.整型提公升2.混合提公升
整型提公升:
char,short,int等型別一起運算時,首先提公升到int。
char ch;short sh;int in;
printf("sizeof(ch)=%d\n",sizeof(ch));//1
printf("sizeof(ch+ch)=%d\n",sizeof(ch+ch));//4
printf("sizeof(sh)=%d\n",sizeof(sh));//2
printf("sizeof(sh)=%d\n",sizeof(sh));//4
printf("sizeof(in)=%d\n",sizeof(in));//4
printf("sizeof(in)=%d\n",sizeof(in));//4
大資料賦值給小資料會溢位,小範圍向大範圍轉由於符號的擴充保證了資料的正確性。
混合提公升:
進行運算時以表示式中最長類為主,將其他型別資料均轉換成該型別。
float 4 double 8
int 4 long long 8
int和float位元組數相同到底是向誰轉化?
float fl = 3.14;
int in = 4;
long long lo = 4;
printf("fl+in=%d\n",%d);//錯誤值
printf("fl+in=%f\n",%d);正確
printf("fl+lo=%d\n",%d);//錯誤
printf("fl+lo=%f\n",%d);正確
說明int=>>>float
long long=>>>float=>>>double
隱式轉換規則:從小向大的方向(不討論溢位,截斷,無符號)
char=>>>short=>>>int=>>>long long=>>>float=>>>double
賦值轉換
int in = 10;
float fl = 3.14;
in = fl;//小數賦值給整數變整數
printf("%d\n",in);//3
fl = in;//整數賦值給小數變小數
printf("%d\n",fl);
強制型別轉換int a = 10;
int b = 3;
printf("%d\n",a/b);//3由於兩個數都是int沒有變數提公升,要想得到3.3333可以強制型別轉換
printf("%f\n",(float)a/b);
printf("%f\n",a/(float)b);
浮點數跟0的比較
float data = 0.0;
if(data == 0) else
if(data == 0.0) else
//結果都是正確的,但是有問題
double tem = 0.3;
printf("%d\n",(int)(tem*10));會出錯,其他的可以。
printf("%d\n",(int)((tem+0.000001)*10));正確無誤,加上修正值
實際村的是 0.299999 或者0.311111
double tem = 0.0;
if(tem>0-0.000001 && tem < 0+0.000001) else
C C 型別轉換
include include using namespace std int main 程式的執行結果如下 註解 int a 相當於將浮點數a的位址的前sizeof int 個位元組當成int型的資料輸出。float a 1.0f在記憶體中的表示是0x3f800000,當 int a強制轉換時,會...
C C 型別轉換
如果乙個int型的變數值為5,則若使用強制型別轉換或者使用memcpy,則相當於直接copy記憶體中的值,若列印,則會列印5對應的ascii值 而若使用函式轉換,則函式會操作記憶體轉為ascii值的5,若列印,則直接為5。memcpy在一定程度上相當於強制型別轉換,但是可以制定拷貝的位元組大小,因此...
C C 常量資料型別
a l a a l a 10,10u,10l,10ul,012,0xc 3.14,3.14f,3.14l 10,10u,10.10e 2 a 的型別是char,l a 的型別是wchar t,a 的型別是以空字元結尾的char陣列,l a 的型別是以空字元結尾的wchar t陣列。10的型別是int...