🌞欢迎来到机器学习的世界
🌈博客主页:卿云阁💌欢迎关注🎉点赞👍收藏⭐️留言📝
🌟本文由卿云阁原创!
🌠本阶段属于练气阶段,希望各位仙友顺利完成突破
📆首发时间:🌹2021年10月10日🌹
✉️希望可以和大家一起完成进阶之路!
🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!
目录
🍈 数据类型
数据在C语言中总体可以分为三类:算数类型、void型以及派生类型,具体细分情况如图所示。
整形
整数类型中的整型,使用最多的是int型,以这种类型为基础,通过long、short、unsigned、signed关键字的修饰形成不同的整型。
int age=19;
字符类型
一个char型的数据存储在内存中并不是存字符本身,存储的是该字符的ASCII码。
char ch='A'; char c=65;
#include <stdio.h> int main() { char a=65; char b='A'; printf("a=%d,b=%d\n",a,b); printf("a=%c,b=%c\n",a,b); return 0; }
布尔类型
C99标准以后增加了布尔类型,并且提供了_Bool这个关键字来声明这种类型的数据,_Bool型数据只有true和false这两个值,C语言使用数值1表示true,0表示false,所以_Bool型属于无符号整型。对于一个_Bool型的变量,不管给它赋什么标量值,如34、1、0、-2.0,它接收值的原则是非0值即认定是1,0就是0。输出_Bool型值时用格式控制符%d。
#include<stdio.h> int main(void) { _Bool x,y,z; x=50; y=0; z=-1; printf("x=%d,y=%d,z=%d \n",x,y,z);
浮点类型
实数浮点类型
double a=1.1;
举个栗子🌰
复数浮点类型(平时用的很少,这里不做介绍)
下面我们举一个小栗子(如果是新手的话,可以不看哈🎃):
#include<stdio.h> int main(void) { char name[40];//名字 int age;//年龄 long id;//学号 double en,ch,ma;//英语,语文,数学三科的成绩 double ave;//三科的平均成绩 char c;//表示水平 _Bool x; printf("请输入您的名字\n"); scanf("%s",name); printf("请输入你的年龄:\n"); scanf("%d",&age); printf("请输入你的学号:\n"); scanf("%ld",&id); printf("请输入英语,语文,数学三科的成绩:\n"); scanf("%lf%lf%lf",&en,&ch,&ma); ave=(en+ch+ma)/3; if (ave>=90) { c='a'; x='a'; } printf("------------ info of qing yun ----------\n"); printf("name=%s\n",name); printf("age=%d\n",age); printf("id=%ld\n",id); printf("ave=%lf\n",ave); printf("c=%c\n",c); if (x) { printf("信息展示的程序已经结束\n"); } return 0; }
🥒简单的输入输出
定义一个变量,看一下它的输出:
#include<stdio.h> int main(void) { int age=1; printf("age=%d \n",age); printf("age=%d \n",&age); printf("age=%10d \n",age); printf("age=%-10d \n",age); }
用scanf函数为一个变量输入值:
#include<stdio.h> int main(void) { int age; scanf("%d",&age) printf("age=%d \n",age); }
在命令行窗口,输入一个整数,比如输入10,然后按Enter键,10这个整数就被放到了age所在的空间。
🍉运算符和表达式
C语言提供的运算符有以下13类。
(1) 算术运算符 (+、-、*、/、%、++、--)
(2) 关系运算符 (>、<、==、>=、<=、!=)
(3) 逻辑运算符 (!、&&、||)
(4) 位运算符 (<<、>>、~、|、、&)
(5) 赋值运算符 (=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>= )
(6) 条件运算符 (?:)
(7) 逗号运算符 (,)
(8) 指针运算符 (*、&)
(9) 求字节数运算符 (sizeof)
(10) 强制类型转换运算符 ( (类型) )
(11) 分量运算符 (. 、->)
(12) 下标运算符 ([ ])
(13) 其他 (如函数调用运算符())
C语言中运算符参与运算也有优先级别,所标优先级数值越小的级别越高,越优先计算。
表达式是由一系列运算符(Operators)和操作数(Operands)组成的式子,它计算一个值、指定对象或函数、产生副作用。
算术运算符
举个栗子🌰
计算25/8的结果,结果使用小数表示。
#include<stdio.h> int main(void) { int a=25; int b=8; printf("%d\n",a/b); printf("%f",a/(b*1.0)); }
自增、自减运算符
C语言提供了自增(++)、自减(--)两个运算符,可用于标量类型数据自身加1或减1运算,不过它们只能作用于可修改左值。自增、自减运算符都分为两种,如果放在左值的左边,称前缀运算符,是先对左值加、减1,再利用左值,相当于先执行“操作数=操作数+1”再加1。
举个栗子🌰
#include<stdio.h> int main(void) { int a=3; int b,c; b=a++; printf("b=%d\n",b); printf("a=%d\n",a); c=++a; printf("b=%d\n",c); printf("a=%d\n",a); }
关系运算符及关系表达式
C语言中提供的关系运算符有>、<、==、>=、<=、!=,分别表示大于、小于、等于、大于等于、小于等于和不等于。由关系运算符和表达式构成的表达式,称为关系表达式。格式如下。
表达式1 关系运算符 表达式2
关系表达式的值由表达式1和表达式2是否满足关系运算符定义的意义来确定,如果满足,整个关系表达式的值是true,否则为false,所以关系表达式的最终结果只有两种值。前面提到C中并没有具体定义true和false这两个值,它们分别是用1和0表示,从这个意义上讲,关系表达式的最终值只有1和0两种。
举个栗子🌰
我与鹿晗谁美?假设我的颜值是99,鹿晗是的颜值是98。
#include<stdio.h> int main(void) { int s1=99; int s2=98; if(s1>s2) printf("我好看"); else printf("鹿晗好看"); }
逻辑运算符与逻辑表达式
逻辑运算符有三种:&&、||、!。由这三个运算符构成的表达式称为逻辑表达式,参与计算的子表达式结果是标量类型。逻辑表达式与关系表达式一样,其值也只有true和false两种,也用1和0表示,整个逻辑表达式的结果值是int型。
举个栗子🌰
假设有一个男生和三个女生相亲,第一个女生的要求是身高要大于175,并且资产要大于100万,第二个女生的要求是两个条件满足其一就好,第三个女生的条件是只要不是个女生就行。
#include<stdio.h> int main(void) { int h=176; int w=99; _Bool g=0; if(h>175 && w>100) printf("第一个女生同意\n"); if(h>175 || w>100) printf("第二个女生同意\n"); if(! g) printf("第三个女生同意\n"); }
赋值运算符与赋值表达式
复合赋值运算符。C语言中的复合赋值运算符有+=、-=、*=、 /=、%=、&=、^=、|=、<<=、>>=。它们也构成赋值表达式,例如,x*=y+8、x/=3、x %= y+3、x-=y+2。
复合赋值运算符把它左边的值与右边表达式,用=左边给定运算符进行运算,得到的结果赋给左边的值。上面实例中的四个表达式分别相当于x=x*(y+8)、x= x /3、x=x%(y+3)、x=x-(y+2)。
举个栗子🌰
小明今年3岁了,小红的年龄是小明年龄加上8之后再乘2。
#include<stdio.h> int main(void) { int a=3; int b=2; b*=a+8; printf("b=%d\n",b); } b=22
条件运算符和条件表达式
条件运算符为 ?:,这是一个三目运算符,它的一般格式为:
表达式1?表达式2:表达式3
由条件运算符和操作数构成的表达式,称为条件表达式。整个表达式值的计算规则是:先计算表达式1的值,如果是非0,计算表达式2的值,并把这个值作为整个条件表达式的值,结束。如果表达式1的值为0,则计算表达式3的值,并把这个值作为整个表达式的值,结束。
举个栗子🌰
我与鹿晗谁美?假设我的颜值是99,鹿晗是的颜值是98。现在有一个女粉丝说,如果卿云好看我就成为他粉丝,如果鹿晗好看我就成为鹿晗的粉丝。
#include<stdio.h> int main(void) { int s1=99; int s2=98; int f1=1300; int f2=1200; s1>s2?f1++:f2++; }
逗号运算符和逗号表达式
用逗号运算符把两个及以上的子表达式连接起来的表达式,称逗号表达式。格式如下。
子表达式1, 子表达式2, ... , 子表达式n,例如,3+5,6+8和a=4+x, x+5%(4+4),i++是两个逗号表达式。逗号表达式从表达式1开始,分别计算每一个子表达式的值,一直算到子表达式n,整个逗号表达式的值就是子表达式n的值。
举个栗子🌰
#include<stdio.h> int main(void) { int a=3; int b; b=(a+1,a+2,a+3); printf("b=%d",b); }
🌮实战巩固
🌰定义两个变量,并对它们进行初始化,然后把一个变量的值赋给另一个变量,并输出两个变量的值。
#include<stdio.h> int main(void) { int age1,age2; scanf("%d",&age1); age2=age1; printf("age1=%d,age2=%d\n",age1,age2); return 0; }
🌰格式控制符中指定输出变量占用的正宽度
#include<stdio.h> int main(void) { long a=10l; printf("a=%10ld",a); return 0; }
🌰一个字符数据的不同输出形式。
#include<stdio.h> int main(void) { char ch='a'; printf("ch=%d,ch=%c",ch,ch); return 0; }
🌰引入头文件后的布尔变量定义、赋值和输出
#include<stdio.h> #include<stdbool.h> int main(void) { bool x,y; //可用bool定义两个布尔型变量。 x=true; //可以应用逻辑值true。 y=false; //可以应用逻辑值false。 printf("x=%d,y=%d\n",x,y); //输出。 }
🌰有float i=10.5,x;,求表达式x=3+i++的值。
#include<stdio.h> #include<stdbool.h> int main(void) { float i=10.5,x; x=3+i++; printf("%lf\n",x); printf("%lf",i); return 0; }
🌰分析下列代码的执行结果
#include <stdio.h> int main(void) { int i=289; //289的二进制数为 1 0010 0001,共9个bit, //假设int型占4个字节,则其余23个位都是0。 char c='a'; c=i; //低8位赋给c,c得到的值是0010 0001,它的十进制为33。 printf("%c\n",c); //%c格式输出,所以输出的是字符 '! '。 }
从这些实例可以看出,编程人员在不同类型数据参与表达式计算时,要非常小心,结果可能与表面计算不一样,这主要是由于C语言在处理不同类型数据时所用的规则造成的。
🌰有int x=10;,编程输出逗号表达式x=2*x, 20/(4+x),x=1+x的值。
#include <stdio.h> int main(void) { int x=10; printf("%d\n",(x=2*x, 20/(4+x),x=1+x));//注意整个逗号表达式用了()。 return 0; }