基于c的for循环中改变变量值的问题

不知道何时起, 非常刻意避免在 for 循环体内改变变量值. 似乎是受别人观点影响, 但却并不知晓原因.
可是有时候用其他方法替代却不方便, 自己试了一下, 或许找到了一丝差异.
用这种方法赋值时, 没有出现问题:


代码如下:

#include <stdio.h>
int main()
{
 int i;
 for(i=0; i<10; i++)
 {
  i = i+2;
  printf("%d/n", i);
 }
 return 0;
}

但是另外一种赋值方法, 却是不行的.


代码如下:

#include <stdio.h>
int main()
{
 int i;
 for(i=0; i<10; i++)
 {
  i = 2;   // 将永远循环下去
  printf("%d/n", i);
 }
 return 0;
}

不知是否只是这个原因, 才有很多提倡不要再 for 循环体内改变变量值的.

(0)

相关推荐

  • C++11的for循环,以及范围Range类的简单实现

    C++11支持range-based for循环.这是一个很方便的特性,能省挺多代码.以下代码就能很方便的遍历vector中的元素,并打印出来: std::vector<int> int_vec; int_vec.push_back(1); int_vec.push_back(2); //如果要修改int_vec中的元素,将变量x声明为 int& 即可 for (int x: int_vec) { std::cout << x << endl; } 可以遍历的对

  • C语言菜鸟基础教程之for循环

    先看程序: #include <stdio.h> int main() { for(int i = 0; i < 5; i++) { printf("i = %d\n", i); } printf("Loop ended!\n"); return 0; } 运行结果: i = 0 i = 1 i = 2 i = 3 i = 4 Loop ended! for循环的语句结构为: for(表达式1; 表达式2; 表达式3) {     语句; } 其执

  • 解析C++中的for循环以及基于范围的for语句使用

    for循环语句 重复执行语句,直到条件变为 false. 语法 for ( init-expression ; cond-expression ; loop-expression ) statement; 备注 使用 for 语句可构建必须执行指定次数的循环. for 语句包括三个可选部分,如下表所示. for 循环元素 下面的示例将显示使用 for 语句的不同方法. #include <iostream> using namespace std; int main() { // The co

  • 快速学习C语言中for循环语句的基本使用方法

    对于某个特定任务我们可以采用多种方法来编写程序.下面这段代码也可以实现前面的温度转换程序的功能:#include <stdio.h> /*打印华氏温度-摄氏温度对照表*/ main() { int fahr; for (fahr = 0; fahr <= 300; fahr = fahr + 20) printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32)); } 温度的下限.上限和步长都是常量, printf 函数的第三个参数必

  • 基于c的for循环中改变变量值的问题

    不知道何时起, 非常刻意避免在 for 循环体内改变变量值. 似乎是受别人观点影响, 但却并不知晓原因.可是有时候用其他方法替代却不方便, 自己试了一下, 或许找到了一丝差异.用这种方法赋值时, 没有出现问题: 复制代码 代码如下: #include <stdio.h>int main(){ int i; for(i=0; i<10; i++) {  i = i+2;  printf("%d/n", i); } return 0;} 但是另外一种赋值方法, 却是不行的

  • WPF实现slide控件拖动完成后改变变量值

    WPF中使slide控件拖动完成后改变变量值这个问题一开始觉得还是挺简单的,网上也看到不少解决方案. 首先一个最简单最直接的方案就是自定义一个名为FinalValue的依赖属性.随后重载OnThumbDragCompleted函数,在Thumb控件完成拖动时改写FinalValue.代码如下 public class SliderIgnoreDelta : Slider { public int FinalValue { get { return (int)GetValue(FinalValue

  • php引用地址改变变量值的问题

    复制代码 代码如下: <?php $foo = 'Bob'; // 将 'Bob' 赋给 $foo $bar = &$foo; // 通过 $bar 引用 $foo echo $foo.'<br/>'; $bar = "My name is $bar"; // 修改 $bar 变量 echo $bar.'<br/>'; echo $foo.'<br/>'; // $foo 的值也被修改 ?> 输出: Bob My name is

  • java集合类arraylist循环中删除特定元素的方法

    在项目开发中,我们可能往往需要动态的删除ArrayList中的一些元素. 一种错误的方式: <pre name="code" class="java">for(int i = 0 , len= list.size();i<len;++i){ if(list.get(i)==XXX){ list.remove(i); } } 上面这种方式会抛出如下异常: Exception in thread "main" java.lang.I

  • 深入浅析Java 循环中标签的作用

    continue和break可以改变循环的执行流程,但在多重循环中,这两条语句无法直接从内层循环跳转到外层循环.在C语言中,可以通过goto语句实现多重循环的跳转,但在非循环结构中使用goto语句会使程序的结构紊乱,可读性变差.因此Java就发明了一种带标签的continue和break语句,实际上它是一种带限制的专门用于循环的goto语句. 通常情况下我们使用的continue(或break)语句不带标签,这时也就是默认在当前的循环中执行continue(或break)语句.带标签的循环实际上

  • ArrayList在for循环中使用remove方法移除元素方法介绍

    有时候我们需要在一个ArrayList的for循环中动态删除元素的需求, 废话不多说看代码 List<Integer> list = new ArrayList<Integer>(); list.add(0); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); list.add(6); list.add(7); //正常循环 for (int i = 0; i < list.size(); i++

  • 在shell或者perl中改变字体或背景的颜色

    在shell下提到终端的颜色的时候不得不提到几个提示符变量: PS1:默认提示符,也就是远程登上系统之后,打开终端,我们天天见到的那个熟悉的提示符: [root@vps ~]$echo $PS1[\u@\h \W]$ PS2:就是我们命令一行写不完在我们命令行下我们打上"\",另起一行所显示的那个: [root@vps ~]$echo "hello" \> "world"hello world[root@vps ~]$echo $PS1[\

  • Android实现基于ViewPager的无限循环自动播放带指示器的轮播图CarouselFigureView控件

    最近用到需要无限轮播自动播放的轮播轮播图,网上感觉都有这样那样的问题,于是自己写了一个通用的控件CarouselFigureView. 特点: 1.可以轮播view可以自己定义,不一定是要是ImageView2.指示器默认显示,但是可以隐藏3.可以设置指示器的颜色.间距.大小 4.有基础的可以自己修改代码改变指示器位置,这个应该不难5.可以自己开启和关闭自动轮播,开启轮播的时候可以设置轮播时间间隔,默认3000毫秒 我们先来看看效果图: 然后来看看使用代码 xml代码 <?xml version

  • c#循环中产生伪随机数

    这种结果的原因在于,Random()函数的默认种子是时间,但在循环中产生随机数时,由于运算速度太快,用做种子的时间是相同的(毫秒级),因此产生的随机数序列是相同的,这样最终的随机数就会相同.(基于"线性同余法"的随机数发生器) 解决方法是,产生一个全局唯一标识符,使用它的哈希值来做种子产生随机数.代码如下: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System

  • 基于python实现在excel中读取与生成随机数写入excel中

    具体要求是:在一份已知的excel表格中读取学生的学号与姓名,再将这些数据放到新的excel表中的第一列与第二列,最后再生成随机数作为学生的考试成绩. 首先要用到的数据库有:xlwt,xlrd,random这三个数据库. 命令如下: import xlwt import xlrd import random 现有一份表格内容如下图: 现在我们需要提取这其中的B1-C14. (提示:在对这份电子表格进行操作的时候,要使用到这个电子表格的地址,即表格的储存位置.) excel=xlrd.open_w

随机推荐