重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
n = scanf("%d",n);
创新互联长期为超过千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为瀍河企业提供专业的成都做网站、成都网站建设,瀍河网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。
这一句有问题
1. scanf 函数是有返回值的,它的返回值可以分成三种情况
1) 正整数,表示正确输入参数的个数。
例如执行 scanf(“%d %d”, a, b);
如果用户输入”3 4”,可以正确输入,返回2(正确输入了两个变量);
如果用户输入”3,4”,可以正确输入a,无法输入b,返回1(正确输入了一个变量)。
2) 0,表示用户的输入不匹配,无法正确输入任何值。如上例,用户如果输入”,3 4”,返回0。
3) EOF,这是在 stdio.h 里面定义的常量(通常值为-1),表示输入流已经结束。在Windows下,用户按下CTRL+Z(会看到一个^Z字符)再按下回车(可能需要重复2次),就表示输入结束;Linux/Unix下使用CTRL+D表示输入结束。
你这个输入一个返回值就是1,因此n也会一直等于一
可以这样调用。
int b=0指的是默认参数,调用时传入或不传入b都行,如果不传入b的话,那么b的值就是0。
另外注意只有最后面的参数可以是默认参数。
不明白你的意思……是不是类似于这样 int hello(char a,int i = 4,int m = 9){} ?
这样在c语言中是不可以的,这是c++的概念,默认参数,使用方法如下:以上面的hello函数为例
hello(n); 默认i=4,m=9。 hello(n,5,23); 这里在函数中i = 5,m = 23.
就是说,如果调用时给参数赋值了,就使用赋值的,如果没有,就使用默认的
需要标明一点,这种函数参数表有个规则,就是所有的默认参数都靠后,即:int hello(int a = 1,int b,int c=23){} 是错误的……而且,使用时,也不可以跳过一个默认值给后面的值赋值,如:
int hello(char a,int b= 12,char c = 'd')如果想参数b使用默认而给c赋值,那么必须是hello(a,12,c),如果跳过赋值b,即:hello(a,c);就是错的,很好理解,这样就把c赋值给参数b了,一定报错。
定义变量取初值:
一、不指定:
全局及静态变量默认0,局部变量随机值。
二、定义同时赋初值:
比如int a=1;char str[]="abc";
三、定义时未赋初值,在使用前赋值。
比如int a;a=1;printf("%d",a);
ps:注意函数内静态变量定义给初值和之后赋值是有区别的,静态变量的定义赋初值语句,只在第一次调用函数时执行,如定义之后有重新赋值的语句,再次调用函数,静态变量会保留上次赋值的结果。