for语句中声明变量

 

在C语言中,局部变量应该在函数的可执行语句之前定义,但在C++中变量可在任何语句位置定义,只要允许程序语句的地方,都允许定义变量。

在C99标准中C同C++一样允许在for循环语句中定义变量。并且这个变量作用域被限定在for循环中,在for循环外就成为了未定义变量(C++也是)。

※GCC下编译时需要加上std选项,例如 gcc example.c -std=c99

 

看一段程序,在for语句中声明了变量i 和 k,(允许在for循环语句中定义变量:指的是程序中i和k这2种形式

这一段程序只有在 Microsoft Visual C++ 6.0 才能编译通过,

在Microsoft Visual Studio 2008 和 GCC 下都是报错的,原因是printf 2行中i和k是未定义的。

 

//define_variable_in_for.c(pp)

#include <stdio.h>int main(void)
{int n = 1;for (int i = 0; i < 10; i++){int k;n = n * i;k = i;}//i 和 k 的作用域到此结束(ISO Standard)printf("i = %d\n", i);//Only Microsoft Visual C++ 6.0 
    printf("k = %d\n", k);//Only Microsoft Visual C++ 6.0 

    return 0; 
}
//n 的作用域到此结束
 

 

Microsoft Visual C++ 6.0 下能编译通过的原因是其扩大了for循环中定义的变量的作用域,作用域扩大至下一个"}",

不知道这是一个BUG还是有意为之。

 

---------------------------------------------------------------------------------------------------
参考资料:
<<C++面向对象程序设计(第二版)>>

转载于:https://www.cnblogs.com/LubinLew/p/define_variable_in_for.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Eclipse安装STS插件

Eclipse安装STS插件 1、下载STS插件 地址&#xff1a;https://spring.io/tools/sts/all/ 最上面是已经安装好STS插件的Eclipse软件&#xff0c;可以点击上图红框中的“previous Spring Tool Suite™ versions”&#xff0c;查看其它版本的Eclipse。下面依次为更新文件、更新站…

转载:CSS hack技巧大全

原文地址&#xff1a;http://www.duitang.com/static/csshack.html part2 —— CSS hack技巧大全 ——作者&#xff1a;吴雷君兼容范围&#xff1a;IE:6.0&#xff0c;FireFox:2.0&#xff0c;Opera 10.0&#xff0c;Sarari 3.0&#xff0c;Chrome参考资料&#xff1a; 各游览器…

Eclipse安装STS插件并解决安装缓慢问题

原 Eclipse安装STS插件并解决安装缓慢问题 2018年11月20日 10:22:29 MyronCham 阅读数 1198 标签&#xff1a; sts 更多 个人分类&#xff1a; 开发工具 Eclipse安装springsource Tool Suite&#xff08;STS)插件&#xff1a;

TextBox控件中只输入整数的几种方法

方法一. if(e.KeyChar!8&&!Char.IsDigit(e.KeyChar)&&e.KeyChar!.) { e.Handled true; } 方法二: if ((e.KeyChar < 48 || e.KeyChar > 57) && (e.KeyChar ! 8) &&e.KeyChar!.) { e.Handled true; } 方法三:if (!Cha…

InvalidCharacterError: Failed to execute 'setAttribute' on 'Element': ')' is not a valid

问题描述&#xff1a; 在webStorm开发angular应用时候 或者vue等&#xff0c;页面没内容&#xff0c;浏览器控制台报错&#xff0c;报诸如题目类似的错误&#xff0c;无误定位性。没找到问题。 查错过程&#xff1a; 1、检查程序有误明显异常 2、检查依赖是否正常 3、检查对应…

Sencha touch API

Sencha touch API http://docs.sencha.com/touch/2.3.1/#!/guide/getting_started 转载于:https://www.cnblogs.com/wuyida/p/6300382.html

eclispe Springboot项目修改html,jsp 页面不能及时刷新

Springboot静态文件不更新的解决办法,以及Springboot实现热部署 正确答案是把菜单 Project > Build Automatically 。&#xff08;之前不知道怎么手瞎把这个给去了&#xff09;。否则再怎么设置缓存&#xff0c;devtools都是白瞎。

Java后台生成NO2016012701(代码+年月日+流水号)这样的流水编号

记录今日较大的点。 参考文章&#xff1a; https://blog.csdn.net/weixin_44538107/article/details/87740611 https://blog.csdn.net/jianqiangdexiaohai/article/details/81240176 项目过程中需要自动生成编号&#xff0c;不在数据库生成&#xff0c;而是在后台代码生成&am…

TFS架构

转载http://www.biaodianfu.com/taobao-tfs.html&#xff0c;感谢原作者标点符。 一、淘宝网的困境 对于淘宝网这样的大型电子商务网站&#xff0c;对于图片服务的要求特别的高。而且对于卖家来说&#xff0c;图片远胜于文字描述&#xff0c;因此卖家也格外看重图片的显示质量、…

(转载)WebStorm 2018.3.2 激活方式(永久)亲测好用!!!!!!

转载链接&#xff1a;https://blog.csdn.net/qq_31279347/article/details/85225234 前言&#xff1a; 总觉的注册码很费事&#xff0c;过一会儿就失效了&#xff0c;博主觉得还是打补丁的方式一劳永逸&#xff0c;很简单&#xff0c;两分钟。 博主版本如下&#xff1a; 第一…

Loaders

Loaders&#xff0c;获取数据的东西。 总体流程是&#xff1a;通过getLoaderManager().initLoader(0,null,this)获得Loader&#xff0c;如果没有&#xff0c;那么就会调用接口函数获取&#xff0c;注意&#xff1a;有ID&#xff0c;所以要在获取的接口函数里进行相应的选择。 会…

Linux内核模块开发常用内核接口

http://pan.baidu.com/s/1sjCqohv 转载于:https://www.cnblogs.com/pengdonglin137/p/3623827.html

vue 循环遍历 搜寻资料

写vue 循环遍历的 大全例子解释 转载连接 &#xff1a;https://www.cnblogs.com/xulei1992/p/6015416.html https://www.jqhtml.com/49765.html https://blog.csdn.net/qq_37591637/article/details/89072542 https://blog.csdn.net/zbw18297786698/article/details/6046673…

Qt 字符串QString arg()用法总结

原文&#xff1a;http://qimo601.iteye.com/blog/1420750 1、QString::arg()//用字符串变量参数依次替代字符串中最小数值 Cpp代码 QString i "iTest"; // current files number QString total "totalTest"; // number of files to pr…

安卓系统开机过程中logo和动画

安卓系统在开机过程中有多处会显示logo或动画&#xff0c;每个都会被next覆盖&#xff1a; boot这个是可选的&#xff0c;和硬件平台相关。boot运行过程非常短暂&#xff0c;显示logo也是一闪而过&#xff0c;所以一般不会使用。 kernel这个是内核提供的功能&#xff0c;和boot…

SVN登录时不断弹出用户名密码输入

** svn换了地址&#xff0c;所以重新定位&#xff0c;在输入账号时&#xff0c;重复报下图&#xff0c;也没有报错&#xff0c;所以就一直无效尝试。期间什么setting clear数据&#xff0c;注册表动文件&#xff0c;搜到的差不多都试了。始终一直报图一的结果。 然后最终结果…

Android Sqite数据库 6

想来想去又坑爹了,数据保存到json中去了,如何拿出来使用了,所以这一篇又要实现和上一篇相反的过程, 将Json转换成java各种对象: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Lan…

jqgrid 列表条件查询的几步关键操作

jqgrid列表条件查询 记录一下我自己老忘的几个点 这次记录一下使用jqgrid在列表查询时的关键点&#xff0c;过一段时间不用就是忘 1】在html页面用 v-model“q.xxx” xxx是在js处定义。 2】这是js里 在jqgrid查询列表时的模块使用postData 承载参数 3】 这是在定义vue对象时…

对计算机考研的认识

发信站: 北邮人论坛 (Wed Jun 1 15:09:43 2011), 站内 不在写具体的调剂问题&#xff0c;以免大家再骂我。只客观说明一下对计算机考研的看法。供后来人参考。 首先计算机考研是统考&#xff0c;所以大家不要在各个论坛问学校有没有辅导班之类的话题。其次&#xff0c;统…

radio 取值赋值 亲测有用实效

$(“input[name‘protocolType’][checked]”).val(); 取值 $(“input[name‘radioName’][value2]”).attr(“checked”,true); 赋值 注意 广泛搜到 $(“input[name‘radioName’][valuetest]”).attr(“checked”,true); 好像不及时起到作用