第一章、C语言学习笔记总结

基础部分:

最简单的c语言程序:

int main()
{
printf("this is a test");
return 0;
}
void main() {
printf("this is a test");
}

int 和 void的区别。

int : 需要一个返回值。也就是 return 0;

void : 不需要返回值,直接省略 return 0;这条语句

重点: 要注意括号之后的“ ;”一定是英文的。建议初学的小伙伴一定要注意这个地方

c语言的数据类型

请添加图片描述

c语言基本类型所占用的字节数

在c语言中基本类型所占用的字节数跟编译环境有关,不同的编译环境所得到的字节数不同。比如:16位编译环境跟32位编译环境中他们所占用的字节数略有不同。

请添加图片描述

(这里只列出一部分)


常量和变量

常量:程序运行中其值不改变的量

变量:用于在内存中存放程序数据的地址。

变量名是一个标识符,区分大小写

int _Myclass;
int _myclass; 
// 变量名要见名知意。

常用的命名法有

  • 驼峰命名法
  • 帕斯卡(Pascal)命名法
  • 下划线命名法

命名规则

  • 严格区分大小写
  • 不能使用c关键字
  • 可以使用 _ (下划线) 开头
  • 不能使用数字开头
  • 只能以下划线和字母开头

进制数的显示

十六进制数:以0x开头的数是十六进制

int main()
{
0x123; 0x12;
abc = 0x12;
printf("0x12的十进制数是%d",abc);
return 0;
}

八进制数字,以0开头的数字。

012; // 八进制的12

int main()
{
int abc;
abc = 012; //赋值语句,把=右边的值赋给左边的变量
	printf("012的十进制是:%d",abc);
return 0;
}


基础部分的补充

标识符:字母,数字,下划线组成。

保留字:不可作为变量的标识符。

赋值: 将=右边的值赋给=左边。

无符号型(unsigned) 只能保存不带符号的数字,不能存放负数。

整型变量的分类

基本型: int

短整型: short int(short)

长整型: long int(long)

无符号型: unsigned int , unsigned short , unsigned long 。只能保存不带符号的数字,不能存放负数。

函数:

sizeof( ) : 看某种类型变量在计算机内存中占用多少字节。

所有的特殊字符都是以 \ 开始的

  • c语言中的默认输出方式: 以十进制输出
  • 八进制: 在数值的前面加0
  • 十六进制: 在数值的前面加 0x

%d: 以十进制形式输出一个数字

%o: 以八进制形式输出一个数字

%x: 以十六进制输出一个数字

%u: 以十进制的形式输出一个unsigned 型的数字

%c: 输出一个字符

%s: 输出一个字符串

%f: 输出实数,(单双精度的数字)

c语言数据类型探讨

在探讨之前我们来看一下 c语言的运算符和类型

请添加图片描述

算数运算符: + - * / %

关系运算符: > < <= >= ! =

逻辑运算符: ! && ||

printf("5/3的结果是%d\n",5/3);
printf("7%%4的结果是%d\n", 7%4);
//同级运算符按照从左往右的顺序依次运算。

请添加图片描述

请添加图片描述


实型数据

double . float

在精度上: 如果赋给变量的值大于其数据类型的话会出现损失精度的情况。其表示方法为科学计数法显示,且舍弃一部分有效数字。

注意:

在实型数据作除法运算时会损失精度。
——————————————————————————————

字符型数据

例如:

char a = ‘c’;

’ ’ 和 “ “ 的区别是: 单引号只能是一个字符。而双引号它本身带了一个结束符( \0 )

  • 在char类型中此处的c在系统中实际存储的是c所对应的ASCII码。
  • \0 是一个结束标志

几种变量赋初值的要点

int a=10;  //变量直接赋初值
int a;
a=10;  //先定义后赋值
int a,b,c=1,2,3;  //多个变量赋初值
int a,b,c=6;  //定义了int a, int b, int c = 6;

数值类型数据之间的混合运算

double ← float

double ← long ← unsigned ← int ← char,short

char、short也可以和其他数据类型进行运算

注意:

当多个类型同时运算时,系统会先去找最大的一个类型,然后将比它小的类型转化为最大的类型,最后在继续进行计算得出结果。

也就是说: 将低类型自动全部转化为那个最高的类型,在进行运算。

例如:

int main(){
int a=5;
float b=6.5;
float c;
printf("a+b=%f\n",c);

在这个程序当中, 程序会将int型的数据直接转换成float再进行运算。


类型转换和自增自减

1.类型转换

强制类型转换

int a;
a = 19;
double bf;
bf = a; 
bf = (double)a;
bf = (double)(3+5);
bf = (double)(3+5);
bf = (double)3 + 5;  ==> bf =  ((double)3) + 5;
short int sa = 15; //占两个字节
int si = 1;   //占用4个字节
sa = (short int)si;

取余的话都需要整形。

如果遇到取余的两数非整数的话,可以将其转换类型变成整数。


2.自增自减

++ 自增

– – 自减

int a = 5;
a--; // 4
a++; //6   ==>   a = a + 1;
--a; //4
++a; //6
单独一行语句出现的话,其值一致。
int a = 5;
a++; //先用后加,先用a的值,然后给a本身加1.
++a; //先加a的值,再使用a。
int i,j;
i = 3;
j = 4;
int k ;
k = (i++)+j;    //先运算就是整体运算,此处默认是k=i+j;等程序此处运行完后再给i+1

printf("%d\n",k);

赋值运算符和赋值表达式

对比取值范围图理解

在这里插入图片描述

赋值运算符:

int a;     // 定义
a = 3;     //赋初值
float bf;  // float是单精度浮点型
bf = a; 
//bf 的值为: 3.000...

char a = 90; // int占用4 byte , char 占用 1 byte ,其取值范围是-128~127
a = 900;  // 数值溢出,不可预料

**// 赋值原则: 类型相同是最理想的。 如果类型不同,建议使用强制类型转化。当强制类型转换时,开发者必须自己明确知道溢出问题**
int a = 9, b = 10;
a = b;
short a;
b = 30000;
a = (short)b; // 强制类型转换的目标是确保编译器不出现警告。

int a;
int b,c;
b = 10000000;
c = 1000000;
a = b * c;  //int型是保存不了这么多的,会溢出。


复合型赋值运算符:

包括 += , *= , %= , -=  .

例如:
int a = 30;
a += 3;  //  a = a + 3;

int y = 8, x = 5;
x *= y + 8;  // -->   x *(y+8) = x 

x = 7;
x %= 3 ; //  x = x % 3
printf("%d",x);

int a,b,c;
a = 3; 
a += (a -= (a*a));
// a += (a -= 9);
// a += (a= a - 9);
// a += (-6);
// a = a + (-6);
// a = -3;

逗号运算符和逗号表达式

逗号运算符格式:

样例:

表达式1, 表达式2

// 计算过程: 先求解表达式1的值,再求解表达式2的值,整个表达式的值是表达式2的值。

int a;
a = (4,5);   //此处括号括住了两个常量
a = (3+5,6+8);
//  , 比 = 优先级低
a = 3*5,a*4; //  a = (a = 3 * 5) , a*4;  
// 结果a = 15;
//跟a*4 没关系, a*4没有输出

//逗号表达式(逗号运算符)

扩展形式:

表达式1,表达式2,表达式3,表达式4 .. .. .. ..

例如:

int x;
int a;
printf("%d,%d,%d",3,4,5);

五类语句:

在c语言中:

末尾加;构成一条语句

int x ; // 是语句

语句: ;之前的是语句
请添加图片描述

(1)控制语句: 9种控制语句

请添加图片描述

(2)函数调用语句:

sizeof(x);  //系统函数

(3) 表达式语句:

3+5;   //表达式语句, 符合语法规则

int a = 3;  // 赋值语句

int i  = i + 1;    //赋值表达式后边跟分号结尾构成赋值语句。

(4) 空语句:

;

只有一个分号,语法上没有问题。但是没有实际意义。

(5)复合语句

用 [ ] 括起来的语句。

c语言允许一行写多个语句。

例如:

int a =1; int b = 3; int c =3 ; short m = 1;

可以把一个语句拆开成几行写: (注意是需要 \ 才可以)

printf("......., \
这里是第二行内容, \ 
这是第三行, \ 
这是第四行 " );
//  要换行必须要使用 \ 才行

程序的三种基本结构

  1. 顺序结构、
  2. 选择结构、
  3. 循环结构、

下面看看这几种结构的特点

顺序结构

请添加图片描述

printf("1");
printf("2");

选择结构:

请添加图片描述

if(3>1)
{ printf("3>1");
}
else
{ printf("3<1");
}

循环结构:

当型循环结构:

(先判断条件是否成立,如果不成立则操作一次也不会执行)
请添加图片描述

int i = 5;
while(i >=0)
{
printf("i = %d",i);
i -= 1; 
}

直到型循环结构:

(a条件至少被执行一次,再判断P条件是否为真)

请添加图片描述

int i = 5;
do
{
		printf("i = %d",i);
		i -= 1;
} while(i >=0);

派生结构

请添加图片描述

int k =1 ;
switch(k)
{
case 1:
		{
			printf("this is a test");
		}
				break;
case 2;
		{ 
			printf("you are so clever");
		}
			break;
}

赋值语句的特殊写法:

int a ;
a = 5;
printf("a的值是%d",a = 8);  // 注意这个地方 a=8;
// a = 8 是再赋值。
printf("a的值是%d",a);
// a = 8 变量值被改变了。


int a = 5;   //  除非有特殊需要,不然不好理解。
if((a = 6) > 0)
{
...
...
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

杨优秀&

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

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

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

打赏作者

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

抵扣说明:

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

余额充值