1 c基础-变量
第一个程序: helloworld
1、创建win32 控制台项目(vs2008)
文件->新建->项目->Visual C++ ->Win32 输入项目名称 选择项目保存位置
#include <stdio.h> //#开头的指令我们叫它预编译指令包含stdio.h windows.h int main(void) //main是程序入口 {//一段程序开始 printf("你好,我的第一个C程序!"); //打印出一些字串信息输出信息 getchar(); //让黑窗口程序停下,不至于一闪而过 return 0; //返回一个 }//一段程序结束
变量命名
必须以下划线,或者大小写字母开头,中间不能包含特殊字符,:;"*()^&^*&%*%^{}[]
整型变量
unsigned 无符号整数类型
int //4字节
unsigned int //4字节 0..0xFFFFFFFF //0..4294967295
unsigned int 0..4294967295 // 4字节
long long int //0x8000000000000000 ..0x7FFFFFFFFFFFFFFF//-9223372036854775808-9223372036854775807
unsigned long long int // 8字节 0..18446744073709551615 //0..0xFFFFFFFFFFFFFFFF
格式化字串
printf
%d 打印4字节整数
%u 打印4字节无符号整数
%lld 打印8字节长整型数
%llu 打印8字节无符号长整型数
优先级
先乘除,后加减
int //0x80000000..0x7FFFFFF
long long int //0x8000000000000000..0x7FFFFFFFFFFFFFF
unsigned int //0..0xFFFFFFF
unsigned long long int // 0..0xFFFFFFFFFFFFFFF
printf("%d %u %lu %d %d %llu \n", 100,100U,100UL,0x100,0100,100ULL); printf("%d %d %d %d %d %d \n", sizeof(100),sizeof(100U),100UL,0x100,0100,1); printf("char 类型 最小值=%d,最大值=%d \n",CHAR_MIN,CHAR_MAX); printf("unsigned char 类型 最小值=%d,最大值=%d \n",0,UCHAR_MAX); printf("unsigned short 类型 最小值=%d,最大值=%d \n",0,USHRT_MAX);
浮点型变量
一、浮点数常量(小数)
0.11L, 0.0f ,0.0,1.88,2.5f ,0.188E1
E3表示103 比如 1.88E 3=1.88*1000=1880.0f
E-3表示10-3 比如 1.88E-3=1.88/1000=0.00188f
二、浮点数变量
关键字 |
字节数 |
数值范围 |
float |
4 |
+3.4E38(精确到6位小数) %f ,%e 来格式化 |
double |
8 |
+1.7E308(精确到15位小数) %f ,%e 来格式化 |
long double |
12 |
+1.19E4932(精确到18位小数) %lf,%le来格式化 |
三、 浮点数运算
5/3 =
5.0/3=
四、控制小数位数
printf("%0.3f \n",7/3);
#include <stdio.h> #include <limits.h> int main(void) //main是程序入口 { //一段程序开始 //打印出 一些字串信息 输出信息 float f1=0.37f; float f2=10.0l; double f3=0.0; f3=f2 +f1; printf("float 所占空间 %d \n",sizeof(float));//3.33333 printf("double 所占空间 %d \n",sizeof(double)); printf("long double 所占空间 %d \n",sizeof(long double)); printf("%f/%f=%.9f\n",f2,f1,f3); printf("这是我们学习的第8课 \n "); getchar(); //让黑窗口程序停下,不至于一闪而过 return 0; //返回一个0 }//一段程序结束
类型转换
一、正确的变量类型
3/2=1.5
3/2+100.5=102
printf (" 3/2+100.5=%f \n", 3/2 +100.5);
printf (" 3.0f/2.0f +100.5f=%f \n", 3.0f/2.0f +100.5f);
printf (" 3.0f/2.0f +100.5f=%f \n", 3.0/2.0 +100.5);
二、强制类型转换
printf (" (float)3/(float)2 +100.5f=%f \n", (float)3/(float)2 +100.5f); // (float) 前缀
三、自动类型转换和隐式类型转换
例1:
printf (" 3/2+100.5=%f \n", (float)3/2 +100.5f); printf (" 3/2+100.5=%f \n", 3/(float)2 +100.5f); printf (" 3/2+100.5=%f \n", 3/2.0f +100.5f); printf (" 3/2+100.5=%f \n", 3.0f/2 +100.5f);
例2:
char v1=2; short v2=111111; float v3=3.45; double v4=10.0f /3; v1=v2; printf ("v1=%hd,v2=%hd,v3=%f,v4=%f \n", v1,v2,v3,v4); 例3: int a=3,b=2; float c=100.5f; printf (" 3/2+100.5=%f \n", a/b+c); printf (" 3/2+100.5=%f \n", (float)a/b+c); printf (" 3/2+100.5=%f \n", a/(float)b+c);
char ,short,int,long long,float,double
#include <stdio.h> #include <limits.h> int main(void) //main是程序入口 { // // printf("3/2=%f \n",3.0f/2.0f);// // printf(" 3/2+100.5=%f", 3/2+100.5);//1+100.5=101.5 错误表达 // printf("(float)3/(float)2 +100.5f=%f \n", (float)3/(float)2 +100.5f); // (float) 前缀 // // printf (" 3/2+100.5=%f \n", (float)3/(float)2 +100.5f); //float int // printf (" 3/2+100.5=%f \n", 3/(float)2 +100.5f); // printf (" 3/2+100.5=%f \n", 3/2.0f +100.5f); // printf (" 3/2+100.5=%f \n", 3.0f/2 +100.5f); //char v1=2; //short v2=13;//-32768~32767 //float v3=3.45; //double v4=10.0f /3.0F; //v1=v4; //隐式把v4转换成char类型 //printf ("v1=%hd,v2=%hd,v3=%f,v4=%f \n", v1,v2,v3,v4); int a=3,b=2; float c=100.5f; printf (" 3/2+100.5=%f \n", a/b+c);//101.5 printf (" 3/2+100.5=%f \n", (float)a/b+c);//b变隐式转换成float printf (" 3/2+100.5=%f \n", a/(float)b+c);//c变隐式转换成float getchar(); //让黑窗口程序停下,不至于一闪而过 return 0; //返回一个0 }//一段程序结束
字符类型
一、字符常量
'A', 'B','\n','\'','1'
二、字符类型变量的赋值
char c1='A';
char c2='b';
char c3=65;
c2='\'';
c2='\n';
三、字符的输入scanf
char ch=0;
scanf("%c",&ch); //从键盘读取一个字符存放到ch变量里
printf("%c,%d\n",ch,ch);
四、字符'A'和65
char c1='A';
char c2='b';
char c3=65;
printf("c1=%d,c2=%d,c3=%d\n",c1,c2,c3);
printf("c1=%c,c2=%c,c3=%c\n",c1,c2,c3);
五、算术运算
char c1='A'+1;
char c2='b'+2;
char c3=65+1;
char c4=c1+c2;
c4='1'+'1';
printf("c1=%d,c2=%d,c3=%d,c4=%d\n",c1,c2,c3,c4);
printf("c1=%c,c2=%c,c3=%c,c4=%c\n",c1,c2,c3,c4);
#include <stdio.h> #include <limits.h> int main(void) //main是程序入口 { char ch; char c1='1'; char c2='b'+2; char c3=65+1; char c4=c1+c2; c4='\n'; //ASCII码 printf("c1=%d,c2=%d,c3=%d,c4=%d\n",c1,c2,c3,c4); printf("c1=%c,c2=%c,c3=%c,c4=%c\n",c1,c2,c3,c4); scanf("%c",&ch); //类似于getchar() scanf("%c",&ch); //类似于getchar() return 0; //返回一个0 }//一段程序结束
编译执行: c1=49,c2=100,c3=66,c4=10 c1=1,c2=d,c3=B,c4=
op=形式的赋值操作符
int a=0;
a+=1; //等价于 a=a+1;// a*=1;
op=类表达式
int a=10,b=5;
a/=b;//等价于a=a/b;
a*=b+1;//等价于 a=a*(b+1);
常用数学函数
//如果不使用这些函数,可以跳过此内容
abs(X); //取整数的绝对值 x是整数
fabs(X);//取浮点数绝对值 x是浮点数
sqrt(X);//开平方
pow(x,y);//Xy x和y是浮点类型
include <stdio.h> #include <math.h> int main(void) //main是程序入口 { int a=-3,b=3; float f=9.0f; float x=3,y=2; a/=b-1;//a=a/(b-1) printf("a=%d,b=%f \n",a,f); printf("a=%d,b=%f \n",abs(a),sqrt(f)); printf("pow(x,y)=%f \n" ,pow(x,y)); getchar(); return 0; //返回一个0 }//一段程序结束
执行后: a=-1,b=9.000000 a=1,b=3.000000 pow(x,y)=9.000000