根据提问中提出的for(i=sizeof(int)*8-2i>=0;i--),这个循环条件并不符合for语句的语法,缺少分号(;),在编译器中会发生报错,如下图所示
for语句的语法格式如下
for(语句1;语句2;语句3){
循环体
}
因此根据上述分析,题目中for语句的正确格式应该为for(i=sizeof(int)*8-2;i>=0;i--),根据这个for语句分析如下
(1)sizeof()函数为C语言内置函数,作用是以字节为单位,返回运算对象的大小。
(2)int为整型,占4个字节
因此sizeof(int)*8-2的结果为4*8-2 =30
根据上述的分析原有的语句for(i=sizeof(int)*8-2;i>=0;i--),即为for(i=30;i>=0;i--)。这个for循环语句为递减的语句,做个简单的分析:
(1)第1次循环,当循环变量i=30,判断i>=0,只要成立,i--。循环结束后i=29。
(2)第2次循环,此时循环变量i=29,判断i>=0成立,i--。循环结束后i=28。
以此类推,循环变量从30递减到0。
(1) 这个循环的作用是从30递减至0。
(2) 循环中有sizeof()函数,用作以字节为单位返回运算对象的大小。