#include<stdio.h>
void main()
{
unsigned char c=250; //二進制是1111 1010
char cx=c; //二進制也是1111 1010,最高位是1,認爲是負數
printf("c=%u,xc=%d\n",c,cx); //xc是cx的二補數 cx=1111 1010 , xc=1000 0110
int x=-1; //二補數是1111 1111 1111 1111 1111 1111 1111 1111 1111
printf("%u\n",x);/*輸出控制符%u是指按無符號整數輸出變數x。而x的二進制值所以位都是1,
按無符號數處理,得到的是最大無符號整數 */
int y=1;
printf("%d\n",(y<<sizeof(int)*8-1)-1);//得到的是 最大帶符號整數
/*<< 是向左按二進制進行移位運算,在sizeof(int)個位元組中,除了最高位的
符號位爲0,其餘位均爲1,即是最大帶符號整數(即可表示的最大正整數)*/
int i=12345;
printf("%d\n",i);
printf("%c\n",i); //將i按字元輸出,則只取最低位元組的值
printf("%f\n",i); //格式控制符與i的型別不一致,結果?
}
<< 是向左按二進制進行移位運算,在sizeof(int)個位元組中,除了最高位的
符號位爲0,其餘位均爲1,即是最大帶符號整數(即可表示的最大正整數)
執行結果
#include<stdio.h>
void main()
{
char c='A'; //字元A的ASCll碼是65
int ix=101,iy=130; //字元e的ASCll碼是101
float fx=49.5;
double dx=98.8;
fx=c; printf(".....%f\n",fx); //自動型別轉換
c=ix; printf("...%c\n",c); //直接賦值,無警告,會發生擷取
c=iy; printf(".%c\n",c); //直接賦值,無警告,會發生擷取
c=fx; printf("---%c\n",c); //直接賦值,有警告,會發生擷取
ix=fx; printf("---%d\n",ix); //直接賦值,有警告,會發生擷取
iy=(int)dx; printf("iy=%d\n",iy);//強制型別轉換
iy=(int)(fx+dx); //強制型別轉換,需要在適當位置加括號
printf("iy=%d\n",iy);
printf("%d\n",c); //正確,字元自動轉換成整數輸出
printf("%c\n",ix); //正確,字元自動轉換成整數輸出
printf("%c\n",iy); //正確,但結果發生擷取
printf("%d\n",fx); //正確,但結果非法,發生擷取
}
執行結果
#include<stdio.h>
void main()
{
char c='A';
int ix=12;
long lix=123456;
float fx=-12.345618f;
double dx=168;
printf("c=c%,to int:%d\n",c,c);/*ACSll碼實質是一個整數*/
printf("ix=%d;\n",ix); /*輸出,變數的型別必須與控制符號相對應*/
/*printf("--------------\n00012345678901234567890\n");*/
printf("ix=%5d;%-5d;按對齊方式,按指定寬度輸出\n",ix,ix);
printf("lix=%ld\n",lix);
printf("fx=%f;預設格式輸出\n",fx);
printf("fx=%9.4f,%-9.4f;按對齊方式,按指定寬度輸出\n",fx,fx);
/*3表示總寬度是9,包括負數的符號位,整數部分,小數點,小數部分*/
/*預設的是右對齊;負號表示左對齊;.4表示小數部分的寬度是4
printf("---------------------\n");
printf("fx=%e\n",fx); /*指數形式輸出*/
printf("dx=%f\n",dx);
printf("dx=%e\n",dx);
printf("The percentage of the girls is 48%%.\n");//輸出%
printf("\"This\'s a joke.\"\n");//輸出單,雙引號
}
執行結果
#include<stdio.h>
int main()
{
int x,y ,z;
int a,b,c,d,e;
printf("please input x=");
scanf("%d",&x); //務必輸入一個5位得正整數
a=x%10; //得到個位上的數位
b=x/10%10; //十位
c=x/100%10; //百位
d=x/1000%10; //千位
e=x/10000%10; //萬位
y=(((a*10+b)*10+c)*10+d)*10+e;
z=((int)(x/10.0+0.5))*10;
//採取除以10.0,加0.5,取整,再乘以10的方式,實現對個位的四捨五入
printf("各位置上的數位依次是 %d,%d,%d,%d,%d\n",e,d,c,b,a);
printf("x=%d,它的逆置數 y=%d\n",x,y);
printf("對x=%d的個位進行四捨五入後,得到的數z=%d\n",x,
return 1;
}
C語言中%d,%nd,%f,%lf,%c,%o,%x %e這個幾個符號的bai表示意思如下:du
1、%a(%A) 表示浮點zhi數、十六進制數位和p-(P-)記數法(C99)。
2、%c 表示字元dao。
3、%d表示有符號十進制整數。
4、%f 表示浮點數(包括float和doulbe)。
5、%e(%E)表示 浮點數指數輸出[e-(E-)記數法]。
6、%g(%G) 表示浮點數不顯無意義的零"0"。
7、%i表示有符號十進制整數(與%d相同)。
8、%u表示無符號十進制整數。
9、%o表示八進制整數 e.g. 0123。
10、%x(%X)還是十六進制整數 e.g. 0x1234。
11、%p 表示指針。
12、%s表示字串。
執行結果