在循环的括号内定义循环变量可以吗?

2024-02-16

我对 C 很陌生,但在 C# 方面有很多经验。 我的大学老师告诉我,在“纯”C 中,初始化循环变量是错误的 在循环括号内。 他说是因为VS编译器才运行的。 由于某些原因,演示文稿中的所有材料还显示了循环,其循环变量在括号之外声明。

for (int i=0; i < 5; i++)
{
   //He says that this is wrong, and you will lose points in tests for that
}

int i;
for (i=0; i < 5; i++)
{
   //Says it should be done like that (i declared outside loop)
}

真的有关系吗?有些编译器无法识别它吗?我会在考试中丢分吗?


这绝对没有错,但问题在于你的编译器使用哪种 C 标准。

如果您的编译器使用早于 C99 的标准,则在循环头中初始化变量将出现如下错误。

$ gcc loop.c 
loop.c: In function ‘main’:
loop.c:5: error: ‘for’ loop initial declaration used outside C99 mode

在后来的标准中它被支持。两种代码风格的唯一区别是scope如果在循环头中声明,则该变量的范围仅限于循环。

因此,通过不在循环头中初始化,您可以使代码更加可移植或独立于标准/编译器。但我认识的大多数人肯定都使用这两种风格。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在循环的括号内定义循环变量可以吗? 的相关文章

  • Xamarin 测试记录器选项有错误。无法记录自动化测试

    选项 gt Xamarin gt Xamarin Test Recorder 中的所有设置都有错误 我的桌面上安装了 Visual Studio 2015 企业版 以及 Xamarin 和 Xamarin Test Recorder 插件
  • 如何准备sql语句并绑定参数?

    不幸的是 文档 http www sqlite org完全缺乏示例 这真的很奇怪 就好像它假设所有读者都是优秀的程序员一样 然而 我对C 并且无法真正从文档中弄清楚如何真正准备和执行语句 我喜欢它的实施方式PDO for PHP 通常 我只
  • Python 相当于 Bit Twiddling Hacks 中的 C 代码?

    我有一个位计数方法 我正在尝试尽可能快地实现 我想尝试下面的算法位摆弄黑客 http graphics stanford edu seander bithacks html CountBitsSetParallel 但我不知道 C 什么是
  • 这种对有效类型规则的使用是否严格遵守?

    C99和C11中的有效类型规则规定 没有声明类型的存储可以用任何类型写入 并且存储非字符类型的值将相应地设置存储的有效类型 抛开 INT MAX 可能小于 123456789 的事实不谈 以下代码对有效类型规则的使用是否严格符合 inclu
  • 如何在 C# 中创建 PKCS12 .p12 文件?

    这可能是一个n00b问题 但我在这方面确实没有任何经验 我需要创建一个包含 X509 证书和私钥的 p12 捆绑包 我当前有两个对象 X509Certificate2 和包含关键信息的 RSAParameters 对象 如何将它们合并到 p
  • WPF ComboBox 中具有本地化名称的枚举

    我有一个列出枚举的组合框 enum StatusEnum Open 1 Closed 2 InProgress 3
  • 代码块 - 使用大地址感知标志进行编译

    如何使用以下命令在 64 位系统上编译 32 位应用程序LARGE ADRESS AWARE使用代码块标记 我需要使用超过 2GB 的内存 应该是添加的情况 Wl large address aware到链接标志 我不使用 CodeBloc
  • 如何按名字和姓氏排序,然后按 SamAccountName 排序,其中并非所有姓名都有名字和姓氏?

    目前 我有以下内容 来自 LDAP Get context based on currently logged on user PrincipalContext domainContext new PrincipalContext Cont
  • 指向 VLA 的指针

    你可能知道 VLA 的优点和缺点 https stackoverflow com a 3082302 1606345在 C11 中它们是可选的 我认为使 VLA 成为可选的主要原因是 堆栈可能会爆炸 int arr n where n 10
  • 为什么 std::atomic 比 volatile bool 慢很多?

    多年来我一直使用 volatile bool 来控制线程执行 并且效果很好 in my class declaration volatile bool stop In the thread function while stop do th
  • 检测 perl 中声明的包变量

    Given package main our f sub f sub g 1 我怎样才能确定 f 但不是 g 已宣布 即兴的 我以为 main g SCALAR 可能是未定义的 但它是一个善意标量参考值 背景 我想将一个变量导入到main
  • 我应该使用 Helgrind 还是 DRD 进行线程错误检测?

    好像Valgrind http valgrind org docs manual manual html有两个工具都可以进行线程错误检测 Helgrind http valgrind org docs manual hg manual ht
  • 使用 C# 的异步 WebRequest

    您好 我有一个函数 它将 url Get 参数传递到网络服务器上的 php 文件 并等待文件的响应 通常需要 10 20 秒 我想将其放入一个循环中 因为我必须一次将这些 Get 请求发送到大约 5 个不同的 php 文件 但是当我尝试将其
  • PowerShell 与 MongoDB C# 驱动程序方法不兼容?

    由 C 泛型引起的最新 MongoDB 驱动程序的问题 Cannot find an overload for GetCollection and the argument count 1 我可能可以使用其他没有泛型的 GetCollect
  • 在 boost 元组、zip_iterator 等上使用 std::get 和 std::tie

    我有哪些使用选择std get lt gt and std tie lt gt 与增强结构一起 例子 我想使用基于范围的 for 循环在多个容器上进行迭代 我可以实施zip函数 它使用boost zip iterator include
  • 提升shared_from_this<>()

    有人可以用几句话概括一下如何提升shared from this lt gt 应该使用智能指针 特别是从使用绑定函数在 io service 中注册处理程序的角度来看 编辑 一些回复要求提供更多背景信息 基本上 我正在寻找 陷阱 即人们使用
  • 智能感知不显示评论

    如果我在 Visual Studio 2010 中输入类似的内容数据集1 我得到所有可用方法和属性的列表 智能感知 这很好用 但是 如果我在此列表中选择一个方法或属性 我不会得到 if 的描述 例如 如果我有类似的东西 public cla
  • 为什么 getch 不可移植?

    是什么使得 getch 本质上无法作为标准 C 函数包含在内 对于控制台界面来说 它是如此直观和优雅 如果没有它 要求输入单个字符总是会产生误导 因为用户可以输入多个键 更糟糕的是 您经常需要确保在读取控制台输入后清除标准输入 这甚至不是作
  • SQL Server CE 不兼容的数据库版本

    我有一个 SQL Server CE 4 0 数据库 sdf文件 当我尝试从我的应用程序 WPF 对数据库进行查询时 出现以下错误 数据库版本不兼容 如果这是兼容文件 请运行修复 其他情况请参考文档 数据库版本 4000000 请求的版本
  • 从最大到最小的3个整数

    我是 C 初学者 我使用 编程 使用 C 的原理与实践 第二版 问题如下 编写一个程序 提示用户输入三个整数值 然后以逗号分隔的数字顺序输出这些值 如果两个值相同 则应将它们排列在一起 include

随机推荐

  • 当 localStorage 已满时会发生什么?

    我已经发现articles http code google com speed page speed docs caching html关于缓存行为 所以我只能假设它没有太大不同 但我想确定一下 我读到大多数浏览器都有 5MB 给予或接受
  • 我应该如何正确实现 Clojure 核心接口?

    如果我使用 Clojure 实现一些数据结构deftype 我应该如何决定哪一个Clojure 核心接口 https github com clojure clojure tree master src jvm clojure lang实施
  • 在 Android 上使用 LuaJ 从 Lua 脚本中请求其他 lua 脚本

    我在 Android 上通过 LuaJ 从 Java 调用需要其他 Lua 脚本的 Lua 脚本时遇到问题 我认为这与我当前的工作目录有关 我在 Java 中尝试的 InputStream input EvilApp getContext
  • Spring通过构造函数参数表达不满足的依赖关系,索引类型为0

    完整的消息是 Caused by org springframework beans factory UnsatisfiedDependencyException Error creating bean with name userRepo
  • Javascript 中日期范围内有多少个特定天

    我有两个约会 一个是开始日期 另一个是结束日期 我想计算有多少个星期六 星期一和星期三属于该日期范围 我该如何解决 我看过几个教程 但他们只计算日期范围内的日期 提前致谢 我使用以下代码仅计算工作日 但我只需要有多少个星期六 星期一和星期三
  • JBuilder 模板永远不会被调用

    在我的 Rails 4 应用程序中 我有一个API V1 ClustersController结构如下 class Api V1 ClustersController lt ApplicationController respond to
  • SELECT 语句的 SQL 别名

    我想做类似的事情 SELECT FROM AS my select WHERE id IN SELECT MAX id FROM my select GROUP BY name 是否可以以某种方式执行 AS my select 部分 即为
  • 核心 API 控制器捕获所有未知路线

    我有一个 Core 2 2 API 和一堆现有的控制器 我现在想做的是添加一个新的控制器 其行为类似于包罗万象的路线 但仅适用于该控制器 并且不干扰现有控制器的路线 在我现有的控制器中 我将路由定义为控制器属性 Route api cont
  • 使用 iText 签名时,Adobe Reader 报告“签名是使用“不可用”创建的。”

    我正在使用 iText 成功签署文档 但是 每当我在 Adob e Reader 中检查 高级签名属性 时 我都会看到 签名是使用 不可用 创建的 我的问题是 如何使用 iText 更新此信息 然后在 Adob e Reader 或任何其他
  • 用于自定义视图的 SwiftUI ViewModifier

    有没有办法创建一个修改器来更新 State private var在正在修改的视图中 我有一个自定义视图 它返回Text具有 动态 背景颜色或Circle具有 动态 前景色 struct ChildView View var theText
  • 使用 UIGestureRecognizer 旋转瓶子

    我现在使用此代码在按钮点击上旋转瓶子 IBAction func spinButton sender AnyObject let rotateView CABasicAnimation let randonAngle arc4random
  • Symfony 2 缓存清除问题

    最近 当我尝试清除缓存时 我的 Symfony 2 网站出现了问题 我在终端中输入以下命令 php app console cache clear env dev 并得到以下错误 ErrorException Warning rename
  • 功能未显示在统一按钮上

    我正在学习 Unity 和 C 我试图使用按钮来触发某些内容 但该功能未显示 这是代码 using System Collections using System Collections Generic using UnityEngine
  • C++ 的 64 位名称修改

    我有一些代码 其中包含以下行 pragma comment linker include test 12 当我使用 C Visual Studio 2010 和配置类型 32 位 我也在 32 位 Windows 机器上 编译代码时 使用此
  • 如何使用 WebMatrix 在 ASP.NET 网页中制作自定义错误页面?

    信不信由你 我试图通过简单的 Google 搜索来寻找这个问题的答案 但我没有找到任何东西 通过 Google 搜索 WebMatrix 自定义错误页面 WebMatrix 如何制作自定义服务器端错误页面 等 但也许我没有使用正确的术语进行
  • boost::asio 和套接字所有权

    我有两个类 谈判者 客户端 都有自己的 boost asio ip tcp socket 有没有办法在协商完成后将套接字对象传输给客户端 我期待着做这样的事情 boost asio ip tcp socket sock1 io boost
  • 如何将请求(python)cookie保存到文件中?

    如何使用图书馆requests 在Python中 请求之后 usr bin env python coding utf 8 import requests bot requests session bot get http google c
  • RcppArmadillo 伽马分布在具有相同种子的平台之间有所不同

    我正在研究一套 https github com osorensen BayesMallows 它使用来自 RcppArmadillo 的随机数 该软件包运行 MCMC 算法 为了获得精确的再现性 用户应该能够设置随机数种子 这样做时 看起
  • 如何让django使用电子邮件而不是用户名注册用户

    我正在尝试创建一个使用名字 姓氏 电子邮件和密码注册用户的网站 我尝试编写此表单并在视图中使用它 from django import forms from django contrib auth models import User fr
  • 在循环的括号内定义循环变量可以吗?

    我对 C 很陌生 但在 C 方面有很多经验 我的大学老师告诉我 在 纯 C 中 初始化循环变量是错误的 在循环括号内 他说是因为VS编译器才运行的 由于某些原因 演示文稿中的所有材料还显示了循环 其循环变量在括号之外声明 for int i