C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符

目录

常量
1.字面常量
2.const 修饰的常变量
3.#define 定义的标识符常量
4.枚举常量
字符串+转义字符
1.字符串
2.转义字符
ASCII编码
选择语句
循环语句
函数
数组
操作符
算术操作符
移位操作符
位操作符
复合赋值符
单目操作符
逻辑反操作
按位取反
原码,反码,补码
sizeof操作符
前置++,后置++
(类型)强制类型转换
关系操作符
逻辑操作符
条件操作符
逗号表达式
总结:
常量 语言中的常量和变量的定义的形式有所差异。
C语言中的常量分为以下以下几种:
1.字面常量
2.const 修饰的常变量
3.#define 定义的标识符常量
4.枚举常量
1.字面常量 C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

2.const 修饰的常变量 const是一个C语言的关键字

int main() { //const-常属性 //const修饰的常变量 const int n=10; //n是变量,但是又有常属性,所以我们说n是常变量。 int arr[n]={0}; //错误的写法 const int num=10; printf("%d\n",num); num=8; printf("%d\n",num); return 0; }

C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

这里的arr[ ]中需要常量,所以这样写是不对的,也进一步证明了const修饰的标识符本质还是变量
3.#define 定义的标识符常量 C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

用 #define 定义的标识符就是一个常量,在数组定义下标的时候可以使用
4.枚举常量枚举的意思就是一一列举
枚举关键字-enum
enum Color { RED, YELLOW, BLUE }; int main() { enum Color color=BLUE; color=YELLOW; printf("%d\n",color); return 0; }

这里面的值也是不能改变的
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

这里可以看出枚举常量是有自己的值,并且是从0开始
字符串+转义字符 1.字符串 "hello bit.\n"
这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串。
注:字符串的结束标志是一个'\0'的转义字符。在计算字符串长度的时候\0是结束标志,不算作字符串内容; 但是你要是计算一个字符串大小的时候,'\0'是要算进去的
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

当一个字符串中没有'\0',它在打印的时候会一直往后打印随机值,直到找到'\0'结束打印
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

2.转义字符 假如我们要在屏幕上打印一个目录:c:\code\test.c我们该如何写代码?
#include int main() { printf("c:\code\test.c\n"); return 0; }

但是我们打印却是:
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

这里就不得不提一下转义字符了。转义字符顾名思义就是转变意思。下面看一些常见的转义字符。
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

这里的第一个'\'为啥不会打印呢?
C语言所有非转义字符前面加上'\'会被忽略,所以'\c'打印出来的就是'c'
如果你想打印'\',就得写'\\'
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

ASCII编码


选择语句 如果你好好学习,拿一个好offer,走上人生巅峰。
如果你不学习,毕业等于失业。
这就是选择!
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片


C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

int main() { int a=0; printf("期末来临\n"); printf("你要好好复习吗?(1/0)>:"); scanf("%d",&a); if (a == 1) { printf("考试通过\n"); } else { printf("挂科,补考\n"); } return 0; }

循环语句C语言中如何实现循环呢?
while语句
for语句
do ... while语句
我们今天先谈谈while语句
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片



int main() { int line=0; printf("学习\n"); while(line<=20000) { printf("敲一行代码 %d\n",line); line++; } if(line>2000) { printf("好offer\n"); } return 0; }

函数 两个数相加
int main() { int num1=0; int num2=0; int sum=0; scanf("%d%d",&num1,&num2); sum = num1+num2; printf("%d\n",sum); return 0; }

用函数实现
int Add(int x,int y)//Add -- 自定义函数 { int z=x+y; return z; } int main() { int num1=0; int num2=0; int sum=0; scanf("%d%d",&num1,&num2); sum = Add(num1,num2); printf("%d\n",sum); return 0; }

函数的特点就是简化代码,代码复用。
数组 数组里面只能存储一组相同类型元素
一般的对象声明形式:
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

数组的声明形式:
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

如果把int型看成一个盒子的话,数组arr[5]就是创建了一个包含5个int型变量的大盒子
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

注意:数组的下标是从0开始的
在声明数组的时候,元素个数必须是常量,下面这样的声明在VS编译器是不允许的
但是在C99标准下是允许的 (在oj题里面也是可以这样写的)
int n=5; int arr[n];

这个东西大家一定要注
【C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符】存是存进去了, 怎么打印出来呢?这里就用到了循环
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

操作符 算术操作符
操作符
+
-
*
/
% 求余数(取模)
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片


移位操作符
操作符
<< 左移操作符
>> 右移操作符
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片


C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

位操作符 这里的按位就是按(二进制)位的意思
操作符
& 按位与
按位或
^ 按位异或
按位与的运算规则:
对应的二进制位有0为0,全1出1
按位或的运算规则:
对应的二进制位有1为1,全0出0
异或的计算规律
对应的二进制位相同,则为0
对应的二进制位相异,则为1
int main() { //(2进制)位操作 //&按位与 //|按位或 //^ 按位异或 int a = 3; int b = 5; int c = a&b; //011 //101 //001 int a = 3; int b = 5; int c = a|b; //011 //101 //111 int a = 3; int b = 5; int c = a^b; //不是次方-是异或 //011 //101 //110 return 0; }

赋值操作符
简单赋值符
=
a=b; 就是把b的值赋值给a
而判断a和b是否相等为a==b;
千万不要混淆
复合赋值符
操作符
+= a += b; a = a + b;
-= a -= b; a = a - b;
*= a *= b; a = a * b;
/= a /= b; a = a /b;
%= a %= b; a = a % b;
>>= a >>= b; a = a >> b;
<<= a <<= b; a = a << b;
&= a &= b; a = a & b;
^= a ^= b; a = a ^ b;
int main() { int a = 10; a = 20; // = 赋值==判断相等 a = a + 10; a += 10; a = a - 20; a -= 20; a = a & 2; a &= 2; //复合赋值符 //+= -= *= /= %=>>= <<= &= |= ^= return 0; }

单目操作符
操作符
逻辑反操作
+ 正值
- 负值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位整体取反
前置、后置–
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
逻辑反操作
在C语言中,我们表示真假,0-假,非0-真
int main() { int a=10; printf("%d\n",a); printf("%d\n",!a); //!--逻辑反操作符 return 0; }

C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

按位取反
int main() { int a=0; int b=~a; //~ 按二进制按位取反 //00000000000000000000000000000000 //11111111111111111111111111111111 //原码,反码,补码 //11111111111111111111111111111111补码 //11111111111111111111111111111110反码 //10000000000000000000000000000001原码 printf("%d\n",b); return 0; }

原码,反码,补码
数据在内存中存储的时候,存储的是二进制的补码
只有在使用,打印的时候才是这个数的原码
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片


注: 我们要把 ! 逻辑反操作符和 ~ 按位取反 区分开
sizeof操作符
sizeof操作符-计算空间大小,很多人都以为sizeof是函数,其实它不是,这个比较特殊,下面我们讲讲它的用法

C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

怎么计算数组有多少个数呢?
先 int arr[10] = { 0 }; //10个整型元素的数组
它总占sizeof (arr)个字节 ,一个元素占 sizeof (arr[0]) 个字节
个数=数组的总大小/每个元素的大小
int main() { int arr[10] = { 0 }; int sz = 0; printf("%d\n",sizeof(arr)); sz = sizeof(arr) / sizeof(arr[0]); printf("sz=%d\n", sz); return 0; }

C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

前置++,后置++
int main() { int a = 10; int b=a++; //后置++,先使用,再++ printf("a=%d\nb=%d\n", a, b); int d = 10; int c = ++d; //前置++,先++,再使用 printf("d=%d\nc=%d\n", a, d); return 0; }

C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

(类型)强制类型转换

int main() { int a=(int)3.14; //(类型)强制类型转换 printf("%d\n",a); return 0; }

C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片

这里把一个浮点型的数强制转换为整型数
关系操作符
操作符 功能
> 大于
>= 大于等于
< 小于
<= 小于等于
!= 不等于
== 等于
再说一遍,不要把 '=' 和 '==' 混淆
逻辑操作符
操作符
&& 逻辑与
丨丨 逻辑或
int main() { //真--非0 //假--0 //&&-- 逻辑与 //||-- 逻辑或 int a = 0; int b = 5; int c = a && b; int d = a || b; printf("c=%d\n", c); printf("d=%d\n", d); return 0; }

C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片


条件操作符
操作符
exp1?exp2:exp3 exp1表达式为真,那么整个表达式的结果为exp2; exp1表达式为真,表达式的结果为exp3
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片


int main() { int a=10; int b=20; int max=0; max=( a>b?a:b); //exp1 ? exp2 : exp3---条件操作符 printf("max=%d\n",max); return 0; }

int main() { int a=10; int b=20; int max=0; if (a

这两个代码效果是一样的
逗号表达式
操作符
exp1,exp2,…expN 从左往右依次执行,整个表达式结果是最后一个表达式的结果
下标引用、函数调用和结构成员
操作符
[ ] 数组下标操作符,操作数:数组名+一个索引值
( ) 函数调用操作符,接受一个或多个操作数:第一个是函数名,其余是函数参数
. 访问结构体成员
-> 访问结构体成员
数组下标操作符
int main() { int a[10]={0}; a[4]; //[]---下标引用操作符 return 0; }

函数调用操作符
C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片


总结: 好了,剩下的东西咱们以后慢慢讲。(好吧,其实是我肝不动了)
感觉博主写得不错的小伙伴们,记得三连哦!

C|初识C语言(2)-常量,字符串+转义字符,ASCII码,选择语句,循环语句,函数,数组,操作符
文章图片









    推荐阅读