在学习单片机的时候才真正知道C语言是什么它是来干什么的~但是C语言用到嵌入式只是它小小的一部分他的应用还有很多地方呢,呵呵我们这里就不讨论这个了。我们是不是在写程序的时候错误很多就算编译通过了也达不到我们预期的结果,完了自己是不是也很难找到错在哪儿吧?我绝得语言之所以能称之为语言,它肯定是一种工具一种相互交流相互通信相互传达之间的意图的工具,作为语言那肯定得有自己的语法,要想相互交流肯定得先学好它的语法吧(比如像表达式,函数,循环,指针)我称之为C语言的语法。C语言虽然很强大但是他也有不少陷阱,所以我发这篇博客有两个目的一是:把C语言一些误用易错的地方总结一下,二是把C语言一些基本语法总结一下~
第一次:
1.关于自增自减(即++i,i++)
要想给一个数加一或减一我们可以:
i += 1;
j -= 1;
而C语言还允许用++和--运算符,其实这里有误导,因为++和--可以作为前缀和后缀,这样的话他们就有可能改变操作数的值,下面让我们来看看:
i = 1;
printf("i is %d\n",++i); /* prints i is 2 */
printf("i is %d\n",i); /* prints i is 2 */
计算表达式i++的结果是i,但是会引发i随后进行自增:
i = 1;
printf("i is %d\n",i++); /* prints i is 1/ */
printf("i is %d\n",i); /* prints i is 2 */
第一个printf 显示了i自增前的原始值,第二个printf显示了i变化后的新值;当然 -- 类似我就不举例了~
但在同一个表达式中多次使用++和--往往很难理解我们看看下面的例子:
i = 1;
j = 2;
k = ++i + j++;
i,j,k最终值分别是2,3,4而++i是2 j++是2;
总结:不管是++i还是i++执行这条语句后i的值都加一了只是(++i)的值加一了而(i++)没变,
2.typedef与#define
2.1.typedef
C语言除了直接使用标准的类型名(如 int char float double)和自己声明的结构体、共用体、指针、枚举类型外,还可以用typedef声明新的类型名来代替现有的类型名。
typedef unsigned char u8;
typedef unsigned int u16;
u8 count;
u16 time;
typedef struct
{
u8 month;
u8 day;
u16 year;
}DATE;
DATE brithday;
总结一下,声明新的类型名的方法:
1.先按定义变量的方法写出定义体(如 unsigned int i)
2.在变量名换成新的变量名(如将 i换成u16)
3.在最前面加上typedef (typedef unsigned int u16)
4.然后用新类型名去定义变量
2.2 #define
2.1.1不带参数的宏定义
#define 标识符 字符串
#define PI 3.1415926