易截截图软件、单文件、免安装、纯绿色、仅160KB

C/C++的一个简单问题,请教。。

void Main(void)
{
    while(1)
    {
    char aa; 
    Uart_Printf("\nEnter the 'Y' or 'y' to test:");
    aa= Uart_Getch();
    Uart_Printf("%c",aa);
        if((aa=='Y')||(aa=='y'))
          {
      (void (*)(void))Test_Iic();
          }
    }
}

为什么把IF循环的“{}”括号去掉,再把"while(1){}"去掉编译器(ads1.2)会报错:expect but found 'char'和undecleared name, inventing 'extern int aa'的错误?这两个东西不去去掉能编译通过。哪个大哥大姐知道为什么??
显而易见

你在{}中有变量的定义,去掉以后,编译器无法将变量压栈,也就是无法为变量分配内存。当然出错了。另外,把{}去了,while和if只认识前一条语句。对其它语句,没有控制力了。

if中的花括号可以去掉,但while的不行。因为C90规定所有变量声明和定义必须放在可执行语句之前。while去掉括号后那个aa变成在while(1)之后,非法。

帮顶!

学习了

while(1){};整体都去掉了啊,不是只去while(1)的括弧啊。。。。

呵呵,二楼说的很好,显而易见的问题,去掉了while循环中就一条语句,就是变量定义,出了循环,此变量就无意义,你的if在while去掉括号之后,变成了和while同级别的语句,当然不可能找到while内定义的变量了


本人以前也做过硬件编程方


相关问答:

一个简单的c游戏

13个人围成一圈,从第一个人开始顺序报号1,2,3。凡报到3者退出圈子,找出最后留在圈子中的人原来的序号
结果应该是13 可我的程序的结果是11 希望好心人帮改一下
#include <stdio.h>
#include < ......

帮忙把下面个c函数转成c#的

const int num=100
float neiji(float [num]b, float [num]c)
        {
            int p;
            float nj ......

两个C文件的问题

以前在VC里面建一个工程,都只用一个 .c 文件,昨天在一个工程里用了两个 .c文件了,遇到问题了,请大家指点。比如:
File1.c Fil ......

文件读写问题 c高手请进

下面是我的代码 从内存写入文件正确 但从文件读入内存都是乱码 而且程序崩溃 请c高手指点
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct inf
{
  & ......

两个链表的连接问题 c高手请进

已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列
连接函数有问题 请高手指点
#include <stdio.h>
#include <stdlib.h>
struct student{
int ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号