C语言中for循环里的变量i和for循环外的变量i一样吗?为什么?

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-01
for(循环条件)里面的变量i和它的复合语句中的静态局部变量i为什么是不一样的变量?

在大括号中申请的静态变量i与循环变量i并不是同一个变量,编译程序自动将它们解释成两个变量来使用。
静态局部变量:存在全局区、不初始化内容为0、整个进程结束空间才被释放,只能在定义所在的复合语句中有效。
静态全局变量:存在全局区、不初始化内容为0、整个进程结束空间才被释放,只能被当前源件使用。
静态变量在应用程序初始化时,就存在于内存当中,直到它所在的类的程序运行结束时才消亡; 而非静态变量需要被实例化后才会分配内存。



普通全局变量:
存在全局区、不初始化内容为0、进程结束空间才被释放,能被当前源件或其他源件使,只是其他源件使的时候,记得使extern修饰。

您好。很高兴回答您的问题。
c语言学到第7章,一般就会讲到变量的作用域的问题。您这里面把i和isprime放在for循环里面定义且赋初始值,那么这个循环每运行一次就会使变量的初始值恢复到定义时的值。若两个变量在循环外定义且赋值的话,那么就只有第一次变量的值为最初的值,后面每次运行这个变量时,它的值就是上一次循环运行得到的结果。根据您这个题目的要求,isprime应该是每次运行都要赋初始值为1,所以应该放在循环内部哦。
以上就是我的回答,希望能帮助到您。

不一样。这是变量作用范围的小知识点。
C语言中,变量分为全局变量,局部问题,临时变量,3类。
全局的好理解,就是在程序的任何地方都可以使用的变量。
局部变量,就是在一定范围内有定义的变量。
临时更好理解了,就是临时使用一下,也是局部变量的一种,不过范围更小,用完就丢弃。
比如 for(int i=0;i<10;i++) {
//{}里这部分是i的作用范围,你可以把i理解成局部的,就是在{}括号里面的是局变量,也可以理解成临时变量。因为i只在for这个循环体内临时使用。

}
int swap(int *a, int *b) {
int t; //这里t的作用范围,就是swap这个函数体,视为局部变量

t = *a; *a=*b;*b=t; //理解成临时变量也可以,因为t的作用,就是交换数据时,临时用一下。
不要纠结临时、局部区别,忘记一个变量是有作用域(作用范围)的就可以了

}

程序的解释如下(见图)



是的,每次循环都会重新定义i

是的,每次循环都会重新定义i

是的,每次循环都会重新定义i

  • 如何用C语言中的fo语句编写“输入两个正整数,求它们间的最大公约...
    答:求两个数的最大公约数和最小公倍数.用一个函数求最大公约数,用另外一个函数根据求出的最大公约数求最小公2011-02-26 13:26#include<stdio.h> void main(){ int max(int n,int m);int min(int n,int m);int a,b;printf("请输入两个整数\n");scanf("%d%d",&a,&b);printf("...
  • C语言问题 29题第二个FOR语句为什么包括两句语句?第一个语句结束后怎么...
    答:先执行里面的j的循环再执行i的循环吧,先小循环,再大循环,我是这么认为的,不过我没算不知道最后答案是不是
  • for语句能被改写成的语句是?
    答:for语句属于常用的循环语句一种。 在C语言中,同样属于循环语句的还有while语句和do...while语句两种 所有的for语句都可以转成这两种语句 1 for语句的结构 所有的fo.
  • c语言的for循环嵌套怎么执行的?
    答:结果如图,有140个a ,for循环嵌套进行,每次先进行了完了一次内部循环,再进行外部循环,例如for(i=0;i<5;i++)for(j=0;j<5;j++)每次执行一次第一个i的循环,就会执行五次j的循环。还有,你的程序有一点错误:getch()是定义在库函数conio头文件中的,所以开头加上#include<conio.h>就行了...
  • C语言的问题
    答:int c;};void main(){ int i;FILE *fp,*fo,*fi;struct qq d[3],f[3];for(i=0;i<3;i++)//这里是不是多了一层循环?for(i=0;i<3;i++){ printf("please:");scanf("%-15s",&d[i].a);//注意使用scanf输入字符串存在一个问题,最后的那个enter键会被写到字符串中,应该...
  • 谁能帮我做下这道C语言编程题,明天就要交了,好心人帮帮忙,谢谢了~~~求...
    答:scanf(" %c",&fo[i].sex);printf("成绩等级:");scanf("%d",&fo[i].judge);} } void display(info fo[N]){ int i;system("cls");for(i=0;i<N;i++){ printf("员工编号:%s\n",fo[i].num);printf("员工姓名:%s\n",fo[i].name);printf("员工性别(男:m,女:f):%c\n...
  • C语言怎么写出"如果对任意i有a[i]=1,则n++"??我试了在if和while的条件...
    答:把a[i]=1改成a[i]==1,一个=是赋值,两个才是相等。
  • C语言求助! 这个题说要通过键盘输入10个数输出最大和最小的 这个程序我...
    答:这程序有问题,没法输出最大的和最小的 for循环是用来输入数据的
  • 如何输入键盘数组c语言
    答:c语言如何从键盘中输入若干个数保存到数组中程序代码:#includestdio.h#defineN10intmain(){inta[N]={0};inti=0;for(i=0;iN;i++){scanf("%d",a[i]);}for(i=0;iN;i++){printf("%d",a[i]);}return0;}扩展资料:C语言中数组的输入和存放可通过scanf()函数来实现。首先要定义一个...
  • C语言编写程序,从键盘输入三角形三条边长(实数),计算并输出该三角形三...
    答:include<stdio.h> intmain(){ folata,b,c,s,p;printf("请输入三角形的三边:");scanf("%f%f%f",&a,&b,&c);p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));printf("三角形的面积为:%.1f",s);return0;}