马老师您的书第5章的例程中 while(1){}语句中的“;”不明白?
/*********************************************Demo_5_2.c
Chip type : ATmega16
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*********************************************/
#include <mega16.h> // 包括器件配置定义的头文件,不能缺少
#include <delay.h> // 包括延时函数定义的头文件,使用延时函数时不能缺少
void main(void)
{
// 定义PortC口的工作方式
PORTC=0x01; // PC口的第0位输出“1”,LED不亮
DDRC=0x01; // 定义PC口的第0位为输出方式
// 主循环
while (1)
{
delay_ms(1000); // 调用CVAVR提供的毫秒延时函数,延时1s
PORTC.0 = ~PORTC.0; // PC口第0位输出取反
};
}
马老师,您的书中的这个程序,就是那个 while(1){}; 语句,这个 while(1) 语句后面还有个";"分号,这个有什么意思啊?
我看得C51书怎么没有讲这样的想法啊? void main(void)
{
// 定义PortC口的工作方式
PORTC=0x01; // PC口的第0位输出“1”,LED不亮
DDRC=0x01; // 定义PC口的第0位为输出方式
// 主循环
while (1)
{
delay_ms(1000); // 调用CVAVR提供的毫秒延时函数,延时1s
PORTC.0 = ~PORTC.0; // PC口第0位输出取反
};
}
明白了? 笔误? 好像不是笔误啊,我到CVAVR里面用向导生成的程序框架都有这个分号,不知道怎么回事。 恩,这是向导里生成的, 我就是刚刚学习C51,看的书都没哟这么介绍过,今天一看有点不明白不知道怎么要这样写。 c语言语法:这个分号是可要可不要
是我的记性不好,还是各位的c语言基础不好? 请问搂上的朋友,这个是C51里的语法还是PC 机的C语法啊,我只有看过C51里的语句,书中没有怎么讲。都是
while(1)
{} 多这一个分号不会有任何问题,少了它却需要自动程序生成器多进行若干次判断(这就为BUG导入带来了新的途径),明白? 只要是c语言,语法都是一样的
书中没讲,不表示不行,只是不提倡写那个分号,显得有些多余 不是笔误是什么?
1.标准用法:
while(条件)
{
}
2.空语句:
;
单独“;”代表空语句 按标准C的语法,是需要一个";",表示一句或一个块结构的结束.不过现在{}后面的可以剩掉. 我认为8楼和10楼是正解,标准C语法里复合语句结尾不需要“;”, 单独的“;”表示空语句。可能是为了编写生成器省事添加的。 同意LS~~ ji 1楼的好牛!
我从来不在括号外面写个“;”,照样可以编译?
在自己没有搞清楚之前,请不要用居高临下的语气,除非你有马老师的水平!
你明白?! 这个也要讨论了 增长知识了… 还是没讨论出到底是为什么啊、期待解决······ 不要说一个“;”了,你放一千个";"都没问题.但是这一千个";"生成的代码长度为0. 没有什么可以讨论的。看看C的标准就可以了。
少了可能会出问题。多重复几个是为了保险。
我例子的程序框架是CVAVR生成的,它后面为了保险加上了“;”(可能怕你在{}中什么也不写,单单测试中断吧),我没有去掉。
咳,到底是学AVR应用,还是学C语言? 那个分号,目的是为了分号后面还能继续写表达式。
页:
[1]