编程c语言-for的外面为什么不能定义变量?

问题描述

for的外面为什么不能定义变量?

搞不懂定义结构体变量时要在for里面定义,或者在main函数的开始时定义,不能在for的外面定义,否则不能通过编译,这是为什么?

解决方案

因为,变量声明必须在函数或块的顶部,在执行了print后,c语言就不许可声明变量了

解决方案二:

看下你的错误信息,按理说放外面放里面都可以。

解决方案三:

while条件中不能定义变量 java书写规范问题,for、while、do while{}后面不能直接定义变量或生成对象(在没有大括号的情况下)
(C++Primer)for循环中定义的变量i的可见性
java书写规范问题,for、while、do while{}后面不能直接定义变量或生成对象(在没有大括号的情况下)

解决方案四:

里面外面都可以的,你把错误信息也发出来

解决方案五:

都是可以的,并且你把结构体定义放到for里面,那么a的作用于就只能是for语句块了,这样程序跳出循环之后a就没有了。

解决方案六:

因为你写的是C,C新标准推行的比较慢
一般声明,必须写在语句组的开头

解决方案七:

不应该啊,应该里面外面都可以的

解决方案八:

我测试了下,都可以编译

http://codepad.org/YSWSELL5

#include <stdio.h>

struct player
{
    int num;
};

int main()
{
    int s = 0;
    printf("*");
    struct player a[20];
    for (s = 0; s < 2; s++)
    {
        scanf("%d", &s);
        switch (s)
        {
            case 0: a[0].num = 3; break;
            case 1: a[1].num = 3; break;
            default: break;
        }
    }
    return 0;
}

http://codepad.org/5vbsexdz

 #include <stdio.h>

struct player
{
    int num;
};

int main()
{
    int s = 0;
    printf("*");
    for (s = 0; s < 2; s++)
    {
        struct player a[20];
        scanf("%d", &s);
        switch (s)
        {
            case 0: a[0].num = 3; break;
            case 1: a[1].num = 3; break;
            default: break;
        }
    }
    return 0;
}
时间: 2024-08-29 12:13:45

编程c语言-for的外面为什么不能定义变量?的相关文章

编程c语言-数据结构中构建线性表

问题描述 数据结构中构建线性表 为什么是取地址符,求普及 解决方案 因为你需要在函数内创建和返回这个表.而status这个返回值被用来返回状态. 用引用修饰参数,将参数当作返回值,这是一种常见的技巧. 解决方案二: 返回地址的引用,方便对返回的表作其他操作. 解决方案三: 有些编译器 没有bool 类型, 就用宏定义了 status 类型 表示 bool类型,不是取地址把? 应该是c++中的引用把? 如果取地址,下面的应该L->elem, 你看的是严蔚敏的数据结构? 解决方案四: 简单来说就是你

工作-编程开发语言未来趋势。

问题描述 编程开发语言未来趋势. 2015了,现在PHP逐步进入的主流.那么在未来的几点哪一种编程开发语言为成为主流?工作比较好找? 解决方案 编程语言的趋势就是,编程语言的碎片化,所谓碎片化就是不再有一家独大的情况了,以前C++占有80%的份额,后来大家都用Java.而现在,虽然还有传统意义上的大众语言,但是渐渐式微. 相反,一大批小众语言开始涌现,并且各领风骚.其实这很好理解,因为传统的PC编程时代过去了,现在的软件渗透到了几乎所有的领域,所有的设备,所有的场合. 需求的多样性必然使得编程语

iOS Socket编程-C语言版(UDP)

iOS Socket编程-C语言版(UDP) 本篇文章为总结使用C语言的api来完成UDP通信的基本功能,如果您对Socket不了解,请先阅读上一篇理论知识: iOS Socket理论知识 如果文章中有任何您认为不正确的或者有疑问的,请联系笔者! 谢谢! 支持原创,请阅读原文 1. UDP Socket编程 先讲一讲UDP编程,因为比TCP要简单多了.首先,我们需要明白UDP是用户数据报协议,英文名为User Datagram Protocol,它是面向无连接的. 注意:Socket通信一定有要

iOS Socket编程-C语言版(TCP)

iOS Socket编程-C语言版(TCP) 本篇文章为总结使用C语言的api来完成TCP通信的基本功能,如果您对Socket不了解,请先阅读上一篇理论知识: iOS Socket理论知识 如果您还想学习UDP编程,请阅读iOS Socket编程-C语言版(UDP) 如果文章中有任何您认为不正确的或者有疑问的,请联系笔者! 谢谢! 支持原创,请阅读原文 1. TCP Socket编程 TCP是面向连接的,安全可靠的传输层协议.TCP的程序基本框架设计图: 注意:Socket通信一定有要服务端和客

c语言-简单编程题:分数化小数,怎么用变量作为输出的小数位?

问题描述 简单编程题:分数化小数,怎么用变量作为输出的小数位? 题目:输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位.a,b<=10^6,c<=100. 输入包含多组数据,结束标记为a=b=c=0. 样例输入: 1 6 4 0 0 0 样例输出: Case 1:0.1667 我的代码如下,还没有完善,如果有其他不足也恳请指教!谢谢 #include int main() { int a,b,c,kase=0; double res; while(scanf("%d%d

c语言-关于C语言中的static变量的问题

问题描述 关于C语言中的static变量的问题 下面的代码最终结果为什么是-10?去掉这个函数中的static则结果是-2可以理解,请教一下加了static后这个变量在函数的多次调用中是如何变化的 int fun() { static int a = 1; return ++a; } int main() { int b; b = fun()-fun()*fun(); printf("%d ",b); return 0; } 解决方案 这属于编译器未定义行为.也就是说,fun()-fu

《从问题到程序:用Python学编程和计算》——2.5 标识符、变量和赋值

2.5 标识符.变量和赋值 前面用表达式做的计算都是各自独立的,实际上是把Python用作一个简单计算器.在提示符下输入一个合法的表达式,解释器处理该表达式,得到一个结果.不同表达式的计算相互无关.显然,这种方式很有局限性,只能完成最简单的计算工作.复杂的计算可能需要经过许多步骤,每步做一点计算工作并记录得到的结果,再基于已得到的结果一步步继续工作下去.要实现这种计算方式,就要有记录计算结果的方法. 2.5.1 变量.名字和值 Python中记录计算结果的机制称为变量.一个变量有一个名字,在程序

C语言中函数的声明、定义及使用的入门教程_C 语言

对函数的"定义"和"声明"不是一回事.函数的定义是指对函数功能的确立,包括指定函数名,函数值类型.形参及其类型以及函数体等,它是一个完整的.独立的函数单位.而函数的声明的作用则是把函数的名字,函数类型以及形参的类型.个数和顺序通知编译系统,以便在调用该函数时进行对照检查(例如,函数名是否正确,实参与形参的类型和个数是否一致),它不包括函数体.--谭浩强 ,<C程序设计>(第四版),清华大学出版社,2010年6月,p182 这段论述包含了许多概念性错误,这

求C语言高手解惑,一个关于const变量定义数组大小问题

问题描述 求C语言高手解惑,一个关于const变量定义数组大小问题 我在函数的外部定义了一个BlockSize,然后又定义了一个结构(两者都是在函数外部).编译的时候,出现一个error.提示说:variably modified 'array' at file scope const int BlockSize = 20;//define BlockSize 20typedef struct _node { int array[BlockSize]; struct _node* next;}N