如果我在循环中声明变量,这是否重要?

Pra*_*uri 2 c scope declaration while-loop

我的问题是,如果我在循环外声明一个变量并在循环内每次重新初始化或在循环内声明和初始化,这是否重要?那么基本上这两种语法(性能,标准等)之间有什么区别吗?

方法1

int a,count=0;
while(count<10)
   a=0;
Run Code Online (Sandbox Code Playgroud)

方法2

int count=0;
while(count<10)
   int a=0;
Run Code Online (Sandbox Code Playgroud)

请假设这只是一个更大程序的一部分,并且body循环内部要求变量每次a都有一个值0.那么,这两种方法的执行时间会有什么不同吗?

hac*_*cks 5

是的,这很重要.在第二种情况下

int count=0;
while(count<10)
   int a=0;
Run Code Online (Sandbox Code Playgroud)

a不能在while循环中引用.它有块范围; 程序文本中可以引用变量的部分.Jonathan Leffler在他的回答中指出的
另一件事是这两个循环都是无限循环.第二,最重要的第二个片段不会在没有(在C中)编译,因为变量定义/声明不是一个语句,不能作为循环的主体出现.{}

 int count  =0;
 while(count++ < 10)
 {  
      int a=0;  
 } 
Run Code Online (Sandbox Code Playgroud)

  • @PranavJituri:在循环的每次迭代中将变量"a"设置为"0"会有一个边际成本.这是否可衡量是值得怀疑的; 当然不是担心它的好理由.现在,如果不是一个简单的`int`(可能在寄存器中),那么该值是一个包含1000个元素的数组,它们具有第37个元素的初始值(因此将其他999个元素归零),然后就是是一种可衡量且值得担忧的成本. (3认同)