关于c语言的一些注意事项

目录

1.操作符

2.特殊的数据类型

3.关于C语各种数据的存储位置

4.修饰符

5.关于switch语句使用的用法及注意事项


1.操作符

在使用自增++和自减--时需要注意操作的是变量而不是常量,如下会出现错误:

#include<stdio.h>
int main(){
    int a=4;
    ++(a++);//出现异常
    return 0;
}

因为a++返回的结果是一个常量,而前置++是给变量加,所以会出现错误。

以后只需记着自增自减只能是变量,而不能是常量或者表达式。

2.特殊的数据类型

float类型的数字在进行比较时必须所有都转化为float类型才能够得到正确的结果,将一个整形转换为浮点类型例如:

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

注意:如果没有将100转化为浮点类型,则输出的结果与预期结果不同,如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(){
	
	printf("%f\n",100);//结果为0
	return 0;
}

 

当使用小数时,系统会自动将小数转化为浮点类型,如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(){
	
	printf("%f\n",18.5);
	return 0;
}

3.关于C语各种数据的存储位置

(1)一般局部变量存储在栈中,当一个函数执行完时栈中的变量也会随之消失

(2)全局变量,静态变量,字符串常量都存在静态内存区中,在静态内存区存储的数据会在程序运行期间一直存在。

(3)自己向系统申请的内存则将数据存储在堆中,比如malloc()函数

4.修饰符

在c语言中被const修饰的变量在之后就不能被修改,只能进行读的操作,所以一般在使用const修饰的变量要赋初值,以防之后不能够进行赋值

5.关于switch语句使用的用法及注意事项

首先,switch语句是进行选择的开关语句,如果选择的值匹配成功就进行执行对应case后的语句,但要是后面的语句没有break进行跳出,那么就会一直默认执行后面的语句,直到遇到break或者执行到最后一句,如下所示,case1可以匹配,但是没有遇到break,则会一直进行执行:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(){
	int n=1;
	switch (n)
	{
	case 1:
		printf("1\n");
	case2:
		printf("2\n");
	case 3:
		printf("3\n");
	default:
		printf("default\n");
	}
	return 0;
}

上面例子中如果n=0,没有结果与进行匹配,则结果为default,

注意:如果没有结果与之匹配,且default放到开头,其结果又会不同,如下所示:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(){
	int n=0;
	switch (n)
	{
	default:
		printf("default\n");
	case 1:
		printf("1\n");
	case2:
		printf("2\n");
	case 3:
		printf("3\n");
	
	}
	return 0;
}

 

 这是因为匹配到了default后没有遇到break,则会一直执行后面的语句,直到执行完所有语句。

例题:这里有一个稍微综合的语句练习,来巩固前面所说的

#include<stdio.h>
int main()
{
int s = 0,n;
for(n=0; n<4; n++)
{
switch(n)
{
default:s+=4;
case 1:s+=1;
case 2:s+=2;
case 3:s+=3;
}
}
printf ("%d\n",s);//24
return 0;
}

首先当n=0时会顺序执行所有的语句,这时候s=10;接着当n=1时,就会从case1后开始执行所有的结果,s=16;然后当n=2时,就会执行case2后面的语句,s=21;当n=3时,会执行case3后所有的语句,s=24,最终输出s,结果为24.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值