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

这篇博客详细介绍了C语言的基础知识,包括常量的四种类型(字面常量、const修饰、#define定义、枚举),字符串与转义字符的使用,ASCII编码的概念。此外,还讲解了选择语句(if-else)和循环语句(while、for)的基本语法,以及函数、数组、操作符(算术、移位、位、复合赋值等)的应用。文章通过实例代码加深理解,适合C语言初学者阅读。
摘要由CSDN通过智能技术生成

目录

常量

1.字面常量

 2.const 修饰的常变量

3.#define 定义的标识符常量

4.枚举常量   

字符串+转义字符

1.字符串

2.转义字符

 ASCII编码

选择语句

循环语句 

函数

数组

操作符

算术操作符

移位操作符

位操作符

复合赋值符 

单目操作符

逻辑反操作

按位取反

原码,反码,补码

sizeof操作符

前置++,后置++

(类型)强制类型转换 

关系操作符

逻辑操作符

条件操作符

逗号表达式

总结:


常量

语言中的常量和变量的定义的形式有所差异。

C语言中的常量分为以下以下几种:

1.字面常量

2.const 修饰的常变量

3.#define 定义的标识符常量

4.枚举常量

1.字面常量

 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;
}

这里的arr[ ]中需要常量,所以这样写是不对的,也进一步证明了const修饰的标识符本质还是变量

3.#define 定义的标识符常量

 

用 #define 定义的标识符就是一个常量,在数组定义下标的时候可以使用

4.枚举常量   

枚举的意思就是一一列举

枚举关键字-enum

enum Color
{
	RED,
	YELLOW,
	BLUE
};

int main()
{
	enum Color color=BLUE;
    color=YELLOW;
	printf("%d\n",color);
	return 0;
}

 这里面的值也是不能改变的

这里可以看出枚举常量是有自己的值,并且是从0开始

字符串+转义字符

1.字符串

"hello bit.\n"

这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串。

:字符串的结束标志是一个'\0'的转义字符。在计算字符串长度的时候\0是结束标志,不算作字符串内容;但是你要是计算一个字符串大小的时候,'\0'是要算进去的

 当一个字符串中没有'\0',它在打印的时候会一直往后打印随机值,直到找到'\0'结束打印

 

2.转义字符

假如我们要在屏幕上打印一个目录:c:\code\test.c我们该如何写代码?

#include <stdio.h>
int main()
{
    printf("c:\code\test.c\n");
    return 0;
}

但是我们打印却是:

这里就不得不提一下转义字符了。转义字符顾名思义就是转变意思。下面看一些常见的转义字符。

这里的第一个'\'为啥不会打印呢?

C语言所有非转义字符前面加上'\'会被忽略,所以'\c'打印出来的就是'c'

如果你想打印'\',就得写'\\'

 ASCII编码

选择语句

如果你好好学习,拿一个好offer,走上人生巅峰。

如果你不学习,毕业等于失业。

这就是选择!

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语句

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;
}

函数的特点就是简化代码,代码复用。

数组

数组里面只能存储一组相同类型元素

一般的对象声明形式:

 数组的声明形式:

如果把int型看成一个盒子的话,数组arr[5]就是创建了一个包含5个int型变量的大盒子

 注意:数组的下标是从0开始的

在声明数组的时候,元素个数必须是常量,下面这样的声明在VS编译器是不允许的

但是在C99标准下是允许的 (在oj题里面也是可以这样写的)

int n=5;
int arr[n];

这个东西大家一定要注

存是存进去了, 怎么打印出来呢?这里就用到了循环

操作符

算术操作符

操作符
+
-
*
/
%求余数(取模)

 

移位操作符

操作符
<<左移操作符
>>右移操作符

  

位操作符

 这里的按位就是按(二进制)位的意思

操作符
&按位与
按位或
^按位异或

按位与的运算规则:

对应的二进制位  有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;
} 

按位取反

int main()
{
	int a=0;
	int b=~a;
	//~ 按二进制按位取反
	//00000000000000000000000000000000
	//11111111111111111111111111111111

	//原码,反码,补码
   
	//11111111111111111111111111111111补码 
	//11111111111111111111111111111110反码 
	//10000000000000000000000000000001原码 
	printf("%d\n",b);
	return 0;
 } 

原码,反码,补码

数据在内存中存储的时候,存储的是二进制的补码

只有在使用,打印的时候才是这个数的原码 

注: 我们要把 ! 逻辑反操作符~ 按位取反 区分开

sizeof操作符

sizeof操作符-计算空间大小,很多人都以为sizeof是函数,其实它不是,这个比较特殊,下面我们讲讲它的用法

 怎么计算数组有多少个数呢?

先 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;
} 

前置++,后置++

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;
}

(类型)强制类型转换 
 

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

这里把一个浮点型的数强制转换为整型数 

关系操作符

操作符功能
>大于
>=大于等于
<小于
<=小于等于
!=不等于
==等于

再说一遍,不要把 '=' 和 '==' 混淆

逻辑操作符

操作符
&&逻辑与
丨丨逻辑或
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;
}

条件操作符

操作符
exp1?exp2:exp3exp1表达式为真,那么整个表达式的结果为exp2;exp1表达式为真,表达式的结果为exp3

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<b)
    {
		max = b;
	}
	else
	{
		max = a;
	}
	printf("max=%d\n",max); 
	return 0;
}

 这两个代码效果是一样的

逗号表达式

操作符
exp1,exp2,…expN从左往右依次执行,整个表达式结果是最后一个表达式的结果

下标引用、函数调用和结构成员

操作符
[ ]数组下标操作符,操作数:数组名+一个索引值
( )函数调用操作符,接受一个或多个操作数:第一个是函数名,其余是函数参数
.访问结构体成员
->访问结构体成员

 数组下标操作符

int main()
{
	int a[10]={0};
	a[4];//[]---下标引用操作符 
	return 0;
} 

函数调用操作符

 

总结:

好了,剩下的东西咱们以后慢慢讲。(好吧,其实是我肝不动了)

感觉博主写得不错的小伙伴们,记得三连哦!

评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

༺࿈梦༒缘࿈༻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值