C语言 2个不引人注意的细节

本文列举了C语言编程中常见的错误及优化建议,包括结构体初始化、sprintf使用风险、条件判断误用、memset参数问题、数学运算陷阱、switch语句误用、指针参数特性及宏定义最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)定义的结构体 不初始化;

2)sprintf是不安全的;

 

如果不注意这两点,有可能对软件的健壮性有影响!

 

 

3)if(1<x<3)  Vc编译器不报错,应该成if(x<3&&x>1)

 

4)memset(buffer,0,size) 应该改成memset(buffer,0,size*sizeof(Type)) ,比如int型和byte型是不同的,尤其在图像处理中将某一行置0的情况;

 

 

5)(25/31)*255 ,像这种算法,如果是操作数为int型,那么结果会为0,不是你所希望的,所以应该写成(25*255/31);

 

 6) c语言switch语句的每个case必须有break;不然后续的case的case会依次执行;

/////
 int n='c';
 switch (n++)
 {
 default:
  printf("error");
  break;
 case 'a':
 case 'A':
 case 'b':
 case 'B':
  printf("ab");
  break;
 case 'c':
 case 'C':
  printf("c");
 case 'e':
  printf("e");
 case 'd':
 case 'D':
  printf("d");

 }

 

输出结果为ced;

 

7)

void func(int *p)
{
 (*p)=(*p)+1;
 return;
}

指针形参是传值的,但是可以改变指针所指值的内容;

 

8)写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个;

#define MIN(A,B) ( (A)>=(B) ? (B):(A) )

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值