更易上手的C语言入门级芝士 (1) 数据类型、变量和常量、字符串+转义字符+注释(超详细)

目录

1.简单数据类型

2.变量和常量

1.const(常变量)

2.enum(枚举常量)

3.#define(标识符常量,也称宏定义)

1.标识符常量

2.宏定义

3.字符串+转义字符+注释

1.字符串(string)

1.字符串即为字符与串的结合

2.char a[]中[]的作用

3.'\0'是字符串的结束标志

4.strlen库函数求字符串的长度

2.转义字符

3.注释


你好!我是一名大一大数据技术专业的学生,我写这篇博客的目的是总结我所学的芝士以及与你分享这些芝士,那么好,让我们赶紧上船,开始这漫长的旅程!

首先,送给你一句话:平静的海浪,培养不出优秀的水手

这篇博客的芝士点包括:数据类型、变量和常量、字符串+转义字符+注释

1.简单数据类型

类型

名字

字节

char

字符型

1

short

短整形

2

int

整形

4

long

长整型

4/8

long long

更长的整形

8

float

单精度浮点型

4

double

双精度浮点型

8

32位与64位是由编译器(例如VS2019)决定的。

数据类型整体上分为有符号类型(signed)和无符号类型(unsigned),即正负,在内存中存储是二进制位,例如整数,高位是符号位即32位编译器,无符号整型变量第32位如果为1,这一位的值为1*2的31次方,有符号高位为1,表示负值,有符号位高位为1为负数,高位为0为正数。

float类型精度比double类型精度低,所以存储范围float小于double

使用方法:数据类型(比如int) 你想定义的名字 = 初始化的值

int a = 10;

使用时叫赋值,定义时叫初始化

2.变量和常量

1.字面意思,变量就是能改变的量。

2.常量就是生活中常见的量比如1,2,3,4,5,为了区分变量,常量就可以认为是不变的量,不变的量就是常量。

变量的定义案例:

int b = 10;   //这个b为全局变量
int main()
{
   int a = 10;   //这个a为局部变量 
   return 0;
}                //大括号就是一个范围限制,局部变量a被大括号所限制,所以成为局部变量
  //这个大括号就是内部代码的“生命周期”以及“作用域”

局部变量与全局变量的变量名一样,局部变量优先

#include <stdio.h>/*包含头文件,头文件内存储着库函数,这里用的是标准输入输出头文件*/
int a = 20;
int main()
{
    int a = 10;
    printf("%d\n",a);/*打印10*/
    return 0;
}

常量可分为三种定义方式:const(常变量),enum(枚举常量),#define(标识符常量)

1.const(常变量)

int main()
{
const int a = 10;   //不加const时a为一个"局部的"、可变的变量 
return 0;           //而const的修饰,a就成为了一个不可改变的常量,表面上是常量,本质上是变量
}                   //所以const int a = 10 就是一个被const修饰的"常变量"

2.enum(枚举常量)

枚举常量字面意思就是能枚举好几种常量

#include <stdio.h>   //这个为头文件,因为printf是一个库函数所以要用stdio.h的头文件
enum Sex              //stdio意思分为:std为标准化  i为input输入  o为output输出
{
   MALE,         //sex为性别  male为男性,famale为女性,recret为秘密
   FAMALE,
   RECRET
};
int main()
{
   printf("%d",MALE);  //MALE的值为0,FAMALE的值为1,以此类推.
   return 0;
}

3.#define(标识符常量,也称宏定义)

1.标识符常量

#include <stdio.h>
#define MAX 100
#define MINI 0
int main()
{
	printf("%d\n", MAX);
	printf("%d\n", MINI);
	return 0;
}

2.宏定义

#define 宏名 宏体

宏参数无类型

#define add(x,y) x+y;
#include <stdio.h>
int main()
{
	int a = 10;
	int b = 20;
	int c = add(a, b);
	printf("%d\n", c);
	return 0;
}

3.字符串+转义字符+注释

1.字符串(string)

1.字符串即为字符与串的结合

字符类型的定义方式为:char a = 'b',字符用单引号' ',打印方式为%c

字符串的定义方式为:char a[] = "abcdef",这里的[]就相当于一个包,这个包的名字为a,里面放着abcdef ,这些字母的类型为char,字符串的定义方式即:char 数组名[] = "存储的内容"

字符串用双引号" ",打印方式为%s,由首元素开始遇到'\0'停止,打印abcdef,'\0'为字符串结束标志

2.char a[]中[]的作用

[]中只能写1,2,3,4,5等这种常量,那么我给你出个小题,咱们浅看一下吧。

int main()
{
const int a = 10;
char b[a] = "abcdefghij";
}

这个题你认为错的还是对的,答案是前者。

[]中只能存放常量值,就是数字1,2,3,4,5等。

C99标准是可以放变量名的,但是不能初始化,例如:char b[a];

存放几,就是里面有几个字符,例如:char a[5] = "abcde";

如果不写要存放几个数时,这个[]会自动读取你存放内容的字符数量

3.'\0'是字符串的结束标志

区分:

'\0'的ASCII码值为0

0的ASCII码值为48

双引号包含的字符串编译器自动补\0

单引号组成的字符串需手动补'\0'

方法:

int main()
{
char a[3] = "abc";
char b[3] = {'a','b','c','\0'};
return 0;
}

如果b[3]不手动补'\0'时,系统就会往'c'后面找'\0‘知道找到为止,导致打印效果不是我们想要的

4.strlen库函数求字符串的长度

strlen即string和length的合体缩写

用法:

strlen(字符串名字)  以上面的代码中字符串数组a,b为例 ,strlen(a) 得到的结果为3

若在之前b字符串中没加'\0'时,strlen(b)得到的结果为随机值

2.转义字符

这个有些坑,先出一道题,你look一下

#include <stdio.h>
int main()
{
	char a[] = "C:\code\test.c";
	printf("%d",strlen(a));
	return 0;
}

浅选一下:A.14  B.15  C.12  D.11                                                             (答案为不是A不是B不是D)

那么咱来看看为什么会是这个选项呐?

下面是转义字符表的一张网图:

 这些转义字符就相当于一个字符那咱们看一下\ddd,每个d为一个八进制数,/ddd为1-3个八进制数,ddd转换成十进制对应的ASCII码值就是一个要打印的值,打印的值统一为十进制,那么/xhh中的hh就是2个十六进制数,也需要转换成十进制来对应ASCII码值才能得到所要的值。

那么,恭喜你,你中奖了,再来一题.

int main()
{
printf("%c",''');   //' '这个单引号前面讲过为字符的标识
}

浅判断一下                                                                                             答案是:程序执行不是不错误

这种情况我们用\'来充当一个字符,就是\字符,例如error:'''  ,编译器默认把前两个 ' 当做一对,        right:'\''  

3.注释

注释例如我写代码后面有个//,//后面的就是我注释的内容,//就是注释的方法

C语言中注释方式为/*内容*/           C++中注释方式为//内容   

各有千秋,各有缺点C的注释方式用量少则注释内容范围大

C++注释方式相反,C的注释方式有一个缺陷,即不能嵌套注释 

每个人的喜好不同,各有选择。

那么这篇博客到这里就告一段落了,你收获了多少呐? 

博客当中的芝士如有问题,我也愿意请你斧正,  互相学习,共同进步。

嘿嘿,第一次这么多 。                          

  • 36
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值