c语言中求和问题:变量i 的初始值何时设置为0,何时设置为1?

作者&投稿:袁禄 (若有异议请与网页底部的电邮联系)
C语言int型变量i赋初值i=017后输出为什么为15~

在C语言中,如果一个整型是以0开头的,那么它就是一个八进制的
如果是以0x开头的,那么它就是一个十六进制的

所以楼主所闻的问题,017表示八进制的数(17)8,计算回十进制就是15

谢谢采纳

楼主有没有注意这个语句
int i;
这个变量的定义是在main()函数之外;
所以这个变量是具有外部连接的全局变量,
对于这样的变量,程序运行的时候初始化为0
如果定义的是
int i[256];
那么这个数组中的所有数也都会被初始化为0

函数void try_1(void)
{
extern int i;
i=i+5;
} 中
extern int i;
这个语句表示引用了外部定义的i
这个语句也是可以省略的

假如这样定义
void try_1(void)
{
int i=0;
i=i+5;
}
那么结果是
i=0
因为在被调函数try_1()中定义的i,并不是外部变量i
而程序中所有函数默认的是外部变量i

blackvis你说的不对,
int i;
这里已经对i定义过了
至于其他文件引用还是不引用,对这个程序是没什么关系的.
如果在前面加上
static int i;
这个i就成了 具有内部连接的全局变量了
那么这个i在这个程序的所有函数里同样通用,但是不能被其他文件引用了.

哦,看错了,对全局变量是.不好意思

这个“ i ”你设置为几都无所谓啊,这只是用来决定循环从哪里开始的,比如拿你的第一个求和问题,我让“ i ”的初始值为24,那么程序这么写:
#include<stdio.h>
void main(){
int i=24;
int initN=1;
int MySum=0;
for(i;i<124;i++){
MySum=MySum+initN;
initN++;
}
printf("The result is %d !\n",MySum);
}
你看到了这里的' i '从24一直加到124,也就是说循环运行了100次,而真正决定这个公式的初始值为initN,你如果要问为什么这个值要一定是1,那么你忽略了公式,你看一下公式,是从1开始加的,所以基数的值要为1,当然一般编程不会这么写程序,因为在这道题中可以用' i '来同时起‘ initN ’的作用,那么程序这么写:
#include<stdio.h>
void main(){
int i=1;
int MySum=0;
for(i;i<101;i++){ //这你也可以写成 for(i;i<=100;i++){
MySum=MySum+i;
}
printf("The result is %d !\n",MySum);
}
程序要以公式为中心,公式是一定的或变化不那么多,但对于一个公式而言,程序可以编写的千变万化。

设置0或1是为了方便,没有具体规定!

不要老关注i怎么了,你要看整个代码是怎么写的,到底每一句是什么意思!

那i我还可以设置成1000呢,是根据我写代码的需要设定的!

这2题初始值设为1或0没影响,设为0代表是有n=0的情况

多练习就明白了,解决问题有多种,你只要一种适合你的就行。

只是个人习惯而已!