① 请问$n为什么要赋初值不赋值就没有输出……
不是必须的,不赋值,再有些时候会出错。。
1、给指针变量赋初值在语法上是没有错误的,编译执行也可以通过,但是一旦代码量增多后,很容易造成指针的错用,为了防止这一问题最好将指针变量定义的时候就置成NULL,这样做是为了代码安全着想。
2、指针定义后就会随机指向一个位置的,编译的时候也不会提示错误,程序短很容易找出来,长了多了就难找了,所以这是一个好习惯吧。
② c++中定义一个变量一定要赋初值吗
不一定。
是否赋初始值是按照编程的实际需要来确定的。
1 对于全局变量和局部静态变量,如果没有初始化值,那么系统默认赋值为0。所以当这类变量的初始值要求为0,或者不关心初始值时,定义时不需要赋初值,这样可以提高效率。
2 对于局部变量,如果没有赋初值,那么默认为随机值,即什么值都有可能。
对于此类变量,如果其初值不重要,或者不会影响程序结果,比如在定义后,下一步就是对其进行输入等从其它渠道获取值的代码,那么可以不赋初值。
③ C语言:为什么变量j不赋初值程序就运行失败
道理简单——这段代码中j在if语句中赋值,若if不成立,那么j就没有被正确赋值,这时若j没有初始化,j就是机器垃圾值,所以要出错。一句话,变量当右值使用前必须有确定值,使用没有初值的变量当右值是C之大忌!
④ C语言:数组没初始化也没赋值,编译系统是否能给没赋值的元素自动(数值型)赋0值或(字符型)赋'\0'值。
不会。利用下面这个程序测试一下就知道了:
#include <stdio.h>
#define Times 40
void main()
{
long x[Times];
int a;
// 测试系统会不会自动为数组赋值
for(a=0;a<Times;a++)
{
printf("第%2d个月:%d\n", a+1, x[a]);
if ((a!=0) && (a%10 == 0))
printf("\n");
}
// 求值
x[0] = 1;
x[1] = 1;
for(a=2;a<Times;a++)
x[a]=x[a-1]+x[a-2];
// 输出结果
for(a=0;a<Times;a++)
{
printf("第%2d个月:%d\n", a+1, x[a]);
if ((a!=0) && (a%10 == 0))
printf("\n");
}
}
⑤ C语言中定义一个变量,不给它赋值。它会有值吗若有是多少
没有加static,默认为auto 型,此时,不给初值,变量的初值是随机的。
如果加了static不给初值,变量的初值是默认的 0。
不能说不赋初值就不行,对于局部变量,不赋初值的话,其实里面存的是一个随机的值,谁也不知道是多少。
(5)不赋初值能不能通过编译扩展阅读:
在C语言中,如果按存储占用空间来分,包括:
整型变量(代码为int),整型变量包括长整型变量(代码为longint)以及短整型变量(代码为shortint),字符型变量(代码为char),浮点型变量(代码float)等。
声明变量时,可以不用声明就直接赋值来决定变量类型的语言,这类语言变量的声明通常被称为弱类型,而如(c++等)必须先声明,后使用,而且声明时必须确定变量类型,这种就是严格的数据类型。
⑥ c语言中定义变量不赋初值是多少
没有加static,默认为auto 型,此时,不给初值,变量的初值是随机的。
如果加了static不给初值,变量的初值是默认的 0。
其实不能说不赋初值就不行,对于局部变量,不赋初值的话,其实他里面存的是一个随机的值,谁也不知道他是多少,因此如果没赋初值的情况下就使用它,程序是完全不可控的,如你的图1,直接在while里去判断b了,因此这个while判断是不可控的。
【c语言】
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。
⑦ 什么jdk版本之后局部变量必须赋初值,不然无法通过编译
没有要求必须初始化(我的是1.8),是要求如果后面用到了的话,则必须初始化。所以,你代码后面肯定是用到了,但是编译器无法认可你用之前必然经过初始化(比如你的赋值语句在if里,编译器就不能保证必然会进入if语句,也就会判断可能出现没有初始化的情况)
⑧ C语言!倒数第六行,为什么j没有赋初值,仍可以进行自加操作,而且整个程序在VC++6.0上可以正确
没有赋初值,可以进行++操作,不冲突啊。
根据编译器而定,如果是VC++的Release版,没有赋初值的变量,都会被初始化为0。其他编译器也差不多,最多不过遇到的就是内存中初始化之前的数据成了一个未知的可能是任何值的数而已,
⑨ java中使用static声明的变量是否必须赋初值
你自己上机实验下不就知道了。不必赋初值的(可以通过编译,也可以运行,调用的时候,系统会默认给他值)
但是按照规范写法,还是要附个初值给他,无论给任何变量赋值,都最好要给他附一个初值。
⑩ C语言问题
指针必须指向具体位置才有意义,所以必须赋值才能使用。编译器为了防止错误,拦截未赋值指针通过编译。
但实际应用中,确实有需要无特定指向的指针,这时可以赋值null(底层数据记作0,表示空指针),告知编译器,这是你的主观设计,不是遗漏失误。