【归纳】C语言代码编写规范


1.若非必要,不要轻易改变寄存器的值!

若改变寄存器的话。读 改 写 三步。别影响其他位。

例程:

问个问题:
while(!(UTRSTAT0 & (1<<2)));
while(!(UTRSTAT0 &= (1<<2)));
有什么区别,第二个循环貌似会无限循环,为什么
大神们可以帮忙看下吗?
Diego、<gui457086306@qq.com> 2018/4/29 16:59:31
第一个只比较不改变 第二个改变了
#虎神#(850817197) 2018/4/29 17:00:35
嗯嗯,是的,第二个bit2初值不为1的话,就陷入死循环了

2.函数调用的形式

本段以下摘自:《谭浩强-C程序设计(第四版)-- 第7.3章调用函数》

       函数调用的一般形式为:    函数名(实参表列)

如果是调用无参函数,则“实参表列”可以没有,但括号不能省略,如下例。若果实参表列包含多个实参,则各参数间用逗号隔开。

按函数调用在程序中出现的形式和位置来分,可以有以下三种函数调用方式:

1.函数调用语句

         把函数调用单独作为一个语句。如:led_test();    这时不要求函数带回值,只要求函数完成一定的操作。

2.函数表达式

       函数调用出现在另一个表达式中,如:“c = max(a, b);”, max(a, b)是一次函数调用,它是赋值表达式的一部分。这时要求函数带回一个确定的值以参加表达式的运算。例:

        c = 2*max(a, b);

3.函数参数

函数调用作为另一个函数调用时的实参。例:

    m = max(a,  max(b, c));

说明:调用函数并不一定要求包括分号(如printf();),只有作为函数调用语句才需要有分号。如果作为函数表达式或者函数参数,函数调用本身是不必有分号的。不能写成:

    printf("%d",  max(a,b); );    //错误写法,max()后面多了一个分号

正确写法:led_test();        //led_test(void);错误,以下同理

File:uart.h

int led_test(void);
void delay(volatile unsigned int k);
void uart0_init();
int putchar(int c);
int getchar(void);
int puts(const char *s);
FIle:main.c

int main(void)

{

        led_test();        //led_test(void);错误,以下同理
	uart0_init();
	puts("Hello, world!\n\r");
	while(1)
	{
		c = getchar();
		if(c == '\r')
		{
			putchar('\n');
		}
		if(c == '\n')
		{
			putchar('\r');
		}
		putchar(c);
}
//运行成功
#include <stdio.h>
void delay(int k)    //或者void delay(void)
{
	 k = 5000;
	while(k--);
}
int main(void)
{

	delay;        //或者delay();均是合理引用?

	int i = 5;
	printf("i = %d, i =%08d, i = %8d\n", i, i, i);
	printf("i = %02d, i =%04d, i = %06d\n", i, i, i);
	printf("i = %010d, i =%012d, i = %014d\n", i, i, i);

	printf("i = %#d, i =%#o, i = %#x\n", i, i, i);
	printf("i = %#d, i =%#8o, i = %#8x\n", i, i, i);
	printf("i = %#0d, i =%#08o, i = %#08x\n", i, i, i);
	printf("i = %#0d, i =%#012o, i = %#012x\n", i, i, i);

	return 0;
}//运行成功




智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告