C语言2常见语句分析

If语句中零值比较的注意点:

1、  bool型变量应该直接出现于条件中,不要进行比较

2、  普通变量和0或者常数比较时,0或常数应该出现在比较符号左边

3、  Float型变量不能直接进行0值比较,需要定义精度

bool b=TRUE;

if(b)

{

}

 

int i=1;

if(0==i)

{

}

 

#define EP 0.00000001

float f=0.0;

if((A-EP<=f)&&(f<=A+EP))

{

}此处A=0;

 

 

case语句排列顺序分析:

1、  按字母或数字顺序排列各条语句

2、  正常情况放在前面,异常情况放在后面

3、  default语句只用于处理真正的默认情况

 

breakcontinue的区别

1、  break表示终止循环的执行,用来跳出一个块即{}之间的语句

2、  continue表示终止本次循环,进入下次循环

 

柔性数组即数组大小待定的数组

C语言中可以由结构体产生柔性数组

柔性数组即数组大小待定的数组

C语言中可以由结构体产生柔性数组

 

struct SoftArray

{

                   intlen;   //指明数组大小

                   intarray[]; //数组元素,可以不写大小

};

下面给出柔性数组的应用:

#include<stdio.h>
#include<malloc.h>

typedef struct _soft_array
{
	int len;
	int array[];  //一般认为大小为0
}SoftArray;  //所以这个数组大小为4

int main()
{
	int i = 0;
	SoftArray*sa = (SoftArray*)malloc(sizeof(SoftArray)+sizeof(int)*10);
	sa->len = 10;  //数组长度
	for(i=0;i<sa->len;i++)
	{
		sa->array[i] = i+1;
	}
	for(i=0;i<sa->len;i++)
	{
		printf("%d\n",sa->array[i]);
	}
	free(sa);
	return 0;
}

下面给出一个比较经典的代码:

有一个数列,其中的自然数都是以偶数的形式出现,只有一个自然数出现的次数为奇数次。编写程序找出这个自然数

你自己先默想三分钟,想想看自己会怎么实现

三分钟

#include<stdio.h>
#define DIM(a) (sizeof(a)/sizeof(*a))//求出数组有多少个元素 

int main()
{	
	int a[]={2,3,5,7,2,2,2,5,3,7,1,1,1};
	int find=0;
	int i=0;
	for(i=0;i<DIM(a);i++)
	{
		find=find^a[i];			
	} 
	printf("find=%d\n",find);
	return 0;
}


在头文件里写了下面的这个,不管会不会多次包含,编译器只用了一次

#ifndef _TEST_H_

#define _TEST_H_

...

#endif


#error用于生成一个编译错误消息,并停止编译

用法:#error message     //message不需要用双引号包围

#error编译指示字用于自定义程序员特有的编译错误消息,类似的,#warning用于生产编译警告,但不会停止编译

#line用于强制指定新的行号和编译文件名,并对源程序的代码重新编号

用法:#line number filename    //filename可省略

例如在一个大工程里,你自己写了一段小代码,用#line1 “my pro”这样就从下一行开始计数


报错的行号也改了,不过这一般是把代码写在一个文件里才用line,现在都可以写自己的模块然后用链接





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值