定义//定义长度为10的数组arr,其中的元素的类型只能是int//对数组不赋值,里面会是随机的数据(栈结构)intarr[10];取值//取出索引0位置的元素arr[0];赋值//索引为5的位置,赋值101010arr[5]=101010;数组初始化//将数组中的所有值初始化为0intarr[5]={0};//数组元素赋予不同的值intarr[5]={0,1,2,3,4};//只给一部分元素赋值,其余会默认为0intarr[5]={0,1,2};//C99特性,对指定索引赋值,其余未被指定的默认0intarr[5]={[0]=0,[2]=5};//直接指定元素,可以不定义数组的长度intarr[]={0,1,2,3};二维数组数组内嵌套数组二维数组定义intarr[3][5];//不进行初始化,数组内就是随机的值intarr[][5];//第一个可以不定义(编译期会自动推算),第二个必须写二维数组取值//取出索引0位置下的索引为0的元素arr[0][0];二维数组赋值//给索引2下的索引3赋值为55arr[2][3]=55;二维数组初始化//全部赋值arr[2][3]={1,2,3,4,5,6};//不推荐这样写arr[2][3]={{1,2,3},{4,5,6}};//推荐写法//部分赋值arr[2][3]={{1,2},{4,5}};//没有赋值的位置默认为0//指定位置赋值arr[2][3]={{[0][0]=1,[0][1]=2},{4,5,6}};
if判断语句单条件判断inti=10;if(i<18){printf("你还小呢!!!\n");}else{printf("还行满18岁了\n");};多条件判断inti=10;if(i<18){printf("你还小呢!!!\n");}elseif(i==18){printf("才刚刚18岁\n");}else{printf("嗯已经大于18岁了\n");};if嵌套inti=10;if(i<18){printf("你还小呢!!!\n");}elseif(i>=18){//嵌套ifif(i==18){printf("刚刚18岁\n");}else{printf("不错已经成年了\n");};};swich匹配语句break;表示跳出该语句+,不然会继续执行后面的匹配块的语句。charsing='A';switch(sign){//语句块case'A':{printf("%c级不错\n",sign);};break;//单行语句case'B':printf("%c级还行\n",sign);break;//没有匹配到的默认语句default:printf("没有这个评级\n");break;};while语句统计用户输入字符的个数#include<stdio.h>intmain(){printf("输入一串字符:");//第一次调用getchar()会等待用户输入内容,存入缓冲区getchar();intcount=1;/*再次调用,这不会等待用户输入内容而是从缓冲区读取内容,一次读取一个字符*/while(getchar()!='\n'){count=count+1;};printf("你输入了%d个字符\n",count);//当缓冲区读取完成时,再一次调用,又会等待用户输入getchar();return0;}dowhile语句先执行,再判断do{循环体;}while(判断语句);for循环intcount;for(count=0;count<0;count++){printf("循环体")}//c99标准可以在表达式定义变量//gcc-std=c99for(intcount=0;count<0;count++){printf("循环体")}灵活的for循环for循环的表达式可以按照需要进行省略,但是分号不能省略for(表达式1;表达式2;表达式3){}for(;表达式2;表达式3){}for(表达式1;;表达式3){}for(表达式1;表达式2;){}for(;;){}//这个相当于死循环break结束循环,相当于跳到循环尾continue跳过本次循环
算数运算符双目:1+2这样操作两个数的运算符单目:-1这样表示的是负一,只操作一个数运算符名称+加法运算符(双目)-减法运算符(双目)*乘法运算符(双目)/除法运算符(双目)%求余运算符(双目)+正号运算符(单目)-负号运算符(单目)类型转换写法:(int)3.9这是强制转换#include<stdio.h>intmain(){//类型转换printf("转换类型%d\n",(int)3.9);}关系运算符关系运算符都是双目运算符在C语言中的关系运算符的优先级大小关系表达式#include<stdio.h>intmain(){inta=1<2;printf("%d\n",a);return0;}逻辑运算符运算符含义优先级举例说明!非高!a如果a为真,!a就为假;反之&&与中a&&ba,b同为真才为真;a,b有一个假就为假;ll或低allba,b同为假才为假;a,b有一个真就为真;逻辑表达式#include<stdio.h>intmain(){printf("结果%d\n",3>1&&1<2);printf("结果%d\n",3+1||2==0);printf("结果%d\n",!('a'+'b'));printf("结果%d\n",!0+1<1||!(3+4));return0;}短路运算(典型逻辑运算)#include<stdio.h>intmain(){inta=3,b=5;(a=0)&&(b=3);printf("a=%d,b=%d\n",a,b);(a=1)||(b=4);printf("a=%d,b=%d\n",a,b);return0;}运行结果a=0,b=5a=1,b=5解释#include<stdio.h>intmain(){inta=3,b=5;//与运算,(a=0)为假,不管后面是什么结果都是假,所以就不会向后执行了(a=0)&&(b=3);printf("a=%d,b=%d\n",a,b);//非运算,(a=1)为真,后面是什么都不影响结果的真,所以也不会往后运算了(a=1)||(b=4);printf("a=%d,b=%d\n",a,b);return0;}
字符#include<stdio.h>intmain(){chara='A';//%c打印字符,%d打印数字printf("%c=%d\n",a,a);return0;}字符串在C语言中没有专门的关键字定义字符串,理解就是字符串也是由一串字符组成的‘字符串’写法#include<stdio.h>intmain(){charname[10];//开辟一个控件//给字符串赋值name[0]='b';name[1]='i';name[2]='g';name[3]='d';name[4]='a';name[5]='t';name[6]='a';name[7]='b';name[8]='o';name[9]='y';printf("%s\n",name);return0;}给字符串赋值的三种方式//先定义,再赋值charname[2];name[0]='b';name[1]='i';//直接赋值charname[10]={'b','i','g','d','a','t','a','d','o','y'};//如果字符串的末尾出现乱码,表示编译器没有识别到字符串的尾部,就需要自己加上`\0`charname[]={'b','i','g','d','a','t','a','d','o','y'};//不定义长度编译器会自动计算//直接定义字符串(注意使用双引号)charstr[]={"bigdataboy"};charstr[]="bigdataboy";
补码是什么一个数在计算机中是以二进制的形式存放的,补码的发明是为了表示带符号数(整型)进行方便的运算。补码的转换正是符号需要占有一格,所以带符号的整型的取值范围是-127~1277到-7的转换127、-127表示补码的用处出现的问题当计算机计算-7+7时,按照常识进行计算,底层是这样的:10000111+00000111=10001110,这时就发现并不等于0处理问题这时我们的前辈就想到的补码这种方式:-7二进制补码表示:111110017二进制表示:00000111进行加法运算:11111001+00000111=100000000结果是100000000但是只有8位去存储整数,所以第九位的1会溢出,这样显示的结果就是00000000,就完成我们需要的运算。扩展占用字节数越多,所能表示的数越大数据类型字节数取值范围char1-128~127unsignedchar10~255short2-32768~32767unsignedshort20~65535int4-2147483648~2147483647unsignedshort40~4294967295
数据类型基本类型整数类型:int浮点数类型:float字符类型:char布尔类型:_Bool枚举类型:enum构造类型数组类型结构类型联合类型指针类型空类型类型的长度在C语言中,并没有固定int的长度,如:16位编译器说明:int占16位,内存2字节,最大值:32767;32位和64位编译器:int占32位,内存4字节,最大值:21474836473位数的增加,那么自然位数也在倍增。整数类型长度大小:longlongint>=longint>=int>=shortint,C语言虽没有规定具体长度,但大小的一定是这样shortintintlongintlonglongint检测长度方法sizeof()sizeof(object);//对象sizeof(type_name);//类型sizeofobject;//对象#include<stdio.h>intmain(){printf("shortint的长度:%d\n",sizeof(shortint));printf("int的长度:%d\n",sizeof(int));printf("longint的长度:%d\n",sizeof(longint));printf("longlongint的长度:%d\n",sizeof(longlongint));return0;}浮点数类型&字符类型&布尔类型浮点数类型floatdoublelongdouble字符类型char布尔类型_Bool#include<stdio.h>intmain(){//整数类型printf("float的长度:%d\n",sizeof(float));printf("double的长度:%d\n",sizeof(double));printf("longdouble的长度:%d\n",sizeof(longdouble));//字符类型printf("char的长度:%d\n",sizeof(char));//布尔类型printf("_Bool的长度:%d\n",sizeof(_Bool));return0;}signed&unsigned有符号:能表示正负数;无符号:只能表示正数//定义例子-[singed]short[int]-unsignedshort[int]-[signed]int-unsignedint-[signed]long[int]-unsignedlong[int]-[signed]longlong[int]-unsignedlonglong[int]#include<stdio.h>intmain(){//有符号inti;//无符号unsignedintj;i=-520;j=520;printf("有符号%d\n",i);printf("无符号%u\n",j);//打印无符号的需要%u}
变量先定义,再赋值使用变量类型char:字符型,占用一个字节int:整形,通常反映了所用机器中整数的最自然长度float:单精度浮点型double:双精度浮点型…后面基本类型补充完整小例子#include<stdio.h>intmain(){//声明变量chara;intb;floatc;doubled;//变量赋值a='a';b=520;c=3.14;d=3.141592653;printf("char类型是%c\n",a);printf("我爱你%d\n",b);printf("圆周率是:%.2f\n",c);printf("圆周率后九位:%11.9f\n",d);return0;}常量定义后不能被改变,为了与变量区别,使用常量名使用大写常量的定义格式:#define常量名常量内容#include<stdio.h>//常量的定义#defineURL"https://bigdataboy.cn"intmain(){printf("大数据男孩网址:%s\n",URL);return0;}
C程序运行C语言的需要先编译成->汇编语言->机器语言,然后给CPU执行。C语言的优势灵活度高、可移植性高、效率高灵活度高:源代码最终编译成机器语言,也就是我们所说的可执行文件,从此CPU就可以直接执行灵活度高:C语言不仅提供多种运算符,还可以完成类似于计算机底层操作的位运算;语法简单,约束少;丰富多变的结构和数据类型;还拥有可以直接操作计算机硬件能力。可移植性高:可移植性高是指源代码在不需要做改动或只需稍加修改,就能够在其他机器上编译后正确运行,因此使用C语言的编译程序更便于移植。另外,无论是Windows系统、Linux系统还是苹果的MacOS系统,抛开现象看本质,它们都与C语言有不可分割的联系。我的第一个C语言程序打印HelloWorld#include<stdio.h>intmain(){printf("HelloWorld\n");return0;}代码说明/**我的第一个C语言程序**/#include<stdio.h>//引入模块/**main()主方法,一个c程序只有一个主方法**/intmain()//int表示返回值类型{printf("HelloWorld\n");//语句需要分号结尾return0;//返回值}运行测试在运行之前,Linux需要安装gcc,安装命令yuminstallgcc#编译C程序[root@nodesie1]#gcctest.c-otest#执行编译后的C程序[root@nodesie1]#./testHelloWorld