C语言中变量等于0的问题

作者&投稿:茌蓉 (若有异议请与网页底部的电邮联系)
C语言中未初始化的变量的值是0么~

全局变量 、静态变量初始值为0,局部变量,自动变量初始值随机分配。
定义局部变量,其实就是在栈中通过移动栈指针来给程序提供一个内存空间和这个局部变量名绑定。因为这段内存空间在栈上,而栈内存是反复使用的,所以说使用栈来实现的局部变量定义时如果不显式初始化,值就是0的。
全局变量链接时已分配空间,程序运行时,操作系统的加载器,负责把链接器分配给全局变量的虚拟内存空间,映射到一个初始化为零的页面,所以被初始化为零。全局和静态的默认初始化都是靠加载机制实现的。另外:未初始化的符号在目标文件的bss段中,而初始化的符号在data段中。

扩展资料
c语言变量的存储类型,变量的初始化
存储变量值的内存类型,有普通内存、运行时堆栈、硬件寄存器。默认存储类型与变量声明位置有关:像全局变量这样代码块之外声明的变量存储在静态内存中,不在堆栈里,程序执行期间始终存在;
代码块内声明的变量默认存储类型是自动的(automatic),称为自动(auto)变量,存储在堆栈中,执行到代码块时被创建,代码块执行完即被销毁。
可以给自动变量加上关键字static,将它变为静态存储类型,它就会在程序运行期间一直存在,但是它的作用域是不变的,代码块外面还是不能用这个变量。

int a, b, c;

//赋值
a = 0; //令a为0,赋值的原则是从右向左
//以下赋值是正确的的:将a+1的结果赋给b
b = a + 1;
//以下赋值是错误的: 试图将b的值赋给表达式c+1。在C语言中,这是不允许的,只能赋值给变量,而不能赋值给表达式
c + 1 = b;

// == 是比较符,被视作一个符号,判断左右两边是不是相等

/*条件判断: 如果a等于0,则输出a的值。这里不同于赋值,而是将a的值与0作判断,返回一个bool结果。即:如果a的值为0,即a == 0为真,则返回真(布尔值为1),反之如果a == 0为假,则返回假(布尔值为0)。if条件判断语句根据返回的是1还是0来决定是否执行下面的语句,如果为1(真),则执行cout<<a<<endl;如果为0(假)则不执行。*/
if (a == 0)
cout<<a<<endl;

/*类似的,== 还可以用于while(a == 0)) 这样的语句中,和if条件十分类似。*/

/*与赋值不同,比较符 == 既可以用于判断变量(如a == 0),也可以判断表达式(如 a + b == c + 1)等。*/

某一变量:

一、如果某一变量是double类型或float类型,才需要你说的那样。因为double类型或float类型都是有精度的,其实都是取的近似值,所以有个误差。和一个很小的数比如0.00000001比较就是为了在这个误差范围内进行比较。
举个例子如double b = 0.123456可能是0.1234561的四舍五入后得到的结果。最后的0.0000001就表示误差范围了。

doubel a;
if ( a>-0.0000001 && a< 0.000001 )对。
而 if( a == 0 )不对!

二、如果是某一变量是int类型,就不需要那样了。
如 int a;
可直接使用 if( a == 0 ) 正确!

只是浮点数这样而已,因为浮点数在电脑里存储是以科学计算法存储的

int类型的变量是直接和0比较的
而folat,double类型的变量在判断是否为0时,是和一个很小的数进行比较,这是因为计算机在计算浮点型的运算时带有一定的误差,比如double x,计算x-x,理论上是=0的,但计算机计算时优势后会得出一个比较小的数字,所以要将其于一个很小的数进行比较

这是浮点型必须这么判断的,如果是int型,直接if(i==0)即可。

lz说的是变量为浮点数的情况!
1.当变量为int型、long型时,可以直接与0进行比较!
2.当变量为float型、double型时,必须与一个近似于0的数做差来进行比较!如下:
float b;
if(abs(b-0.00001)=0 )
原因很简单,0用浮点数表示不出来!所以就只有如此!


c语言int类型变量初始值是多少啊?
在C语言中,int类型变量的初始值为0,以下是程序代码跟输出结果:♡♡ 有帮助到的话,麻烦采纳哦!♡♡

c语言中s%v!=0是什么意思?
在C语言中,表达式 s % v != 0 是一个条件判断语句,用于检查变量 s 除以变量 v 的余数是否不等于0。具体解释如下:运算符用于计算两个操作数相除的余数。s % v 表示将变量 s 除以变量 v,并取得余数。!= 是不等于的比较运算符,用于判断两个操作数是否不相等。0 是一个常量,代表零。因此...

0在C语言中是整型变量吗?
是整数,你要看你这个0怎么来的,比如 int x;那么自然是整型,如果是bool x=0;那就是bool型了 你下面的x应该是int型 输出的应该是 x=3时输出 **d x=4时输出 ##4 同理只要是奇数就是前面的输出,偶数就是后面那种样式的输出 (x%2)这个的结果返回的是bool值,flase 和 true被...

c语言中=与==的区别,求详解 a=0,b=0,c=0 if(a=b+c) printf("**\\n...
=表赋值;==表逻辑判断;a=0,b=0,c=0表示a值为0,b值为0,c值为0 if(a=b+c)表示a的值为b+c的值(这不表逻辑判断),当a赋值成功后,if里返回1(真),则执行printf("**\\n") 。

在C语言中当sign=0; 时 !sign是什么意思啊???
在c语言里面,非零就是真的意思,零就是假的意思,sign=0,就是将0赋值给sign,或者是将sign赋值为假,!sign就是真的意思,顾名思义,sign就是标记的意思,在程序里面有的时候要设立一个标记来确定程序过程中是否改变了某个值,比如说是判断奇偶数的程序什么的,算法不同用处也不同,不过还是比较...

c语言中 if ((i = ! i) =0) 是什么意思
if ((i = ! i) =0)应该是if ((i = ! i) ==0),注意这是if语句判断是否相等的,C语言中的等于号是== if ((i = ! i) ==0)的意思是:先求变量i的非,再把值赋给i自身,然后比较i是否等于0 C语言规定非0为真,0为假,即如果i的值是除0以外的任意一个数,就认为i为真,则!

C语言中 int a=0,b=0,c=0; if(a&&++b) c++; printf("%d,%d\\n",b,c...
因为a=0所以&&右边的就被短路了,不被执行, 所以最后a, b, c的值都不变,都为0

在c语言中的一个语句 s=!10 结果是多少?
你的想法是正确的。s变量输出等于0。!是逻辑运算。只有false或者ture两种结果。

c语言中 if(a=0)和 if(a==0)表达的意思相同吗
不同,=是赋值符号,而==是等号,就如同数学中的等号一样。if(a=0),不管怎样这都是真。if(a==0)z只有当a为0这后面语句才能执行。要注意这两个符号的运用。还有很多,例如a++,++a,--a,a--等。

C语言中i=0;a〔i〕!=′\\0′;i++是什么意思?特别a〔i〕!=′\\0′是什 ...
i=0;a〔i〕!=′\0′;i++ 一般在for语句中出现 i=0是为循环变量i赋初值 a(i)!='\\0'是循环持续条件 i++是循环变量每次的变化,这里是每次递增1 其中a(i)!='\\0'表示a(i)不是截止符 在c中,字符串之后都会跟随一个'\\0'字符,表示字符串终止 ...

岱岳区13660903534: C语言中x!=0到底是x不等于0 还是x不为假 -
薄冉泮托: x!=0 是逻辑表达式,它的计算结果是逻辑值: 假或真,到底是真是假,要看 x 的 当前值. 如果 x 不等于 0, 计算结果是逻辑值真,也就是等于 1 如果 x 等于 0, 计算结果是逻辑值假,也就是等于 0.

岱岳区13660903534: c语言判断!((a==0)&&(b==0)) -
薄冉泮托: 不知道你要问什么,但是我仍然可以告诉你这句话的意思!1,a,b肯定是在程序的某个地方定义的整形变量,他们代表的是任何整数,具体是多少,要看程序怎么赋值了2,==符号就是 等于的意思,注意c语言中只有一个等号的情况下,不是等于...

岱岳区13660903534: C语言的变量初始值都=0?为什么?等于别的可以吗啊? -
薄冉泮托: 当然可以 只是 零 会避免一些不必要的错误,最好赋零 呵呵 其他也没什么特别的~~

岱岳区13660903534: C语言公用变量这么声明?还有int i=0是什么意思 -
薄冉泮托: 全局变量在函数外声明,如#include int i=0;//全局变量int main (){//函数内容}int i=0;是int i;i=0;的简写,表示对整型变量i进行声明,然后给i赋初值0;

岱岳区13660903534: 在C语言if语句后的逻辑量中X=0和X==0的区别?其实主要是想知道X=0啥时候为真? -
薄冉泮托: x=0是赋值,如果你赋给x的值不是0,就是真,这个表达式的值就是赋完值后的x的值 x==0这是判断x是否等于0

岱岳区13660903534: c语言中 if ((i = ! i) =0) 是什么意思 -
薄冉泮托: if ((i = ! i) =0)应该是if ((i = ! i) ==0),注意这是if语句判断是否相等的,C语言中的等于号是== if ((i = ! i) ==0)的意思是:先求变量i的非,再把值赋给i自身,然后比较i是否等于0 C语言规定非0为真,0为假,即如果i的值是除0以外的任意一个数,就认为i为真,则!i为假. 如果说的不对,还请指明

岱岳区13660903534: c语言中定义结果变量为零是什么意思 -
薄冉泮托: 这个,不太清楚你的意思.如果定义变量的话,最好给它赋初值.如果不确定初值,一般我们都定义为0.因为在用到变量时,如果没有初始化经常导致意想不到的错误.形成良好的变成习惯.

岱岳区13660903534: C语言中number!= 0是什么意思 -
薄冉泮托: 变量number不为零

岱岳区13660903534: c语言中 i=j==0是什么意思? -
薄冉泮托: 根据你写的,i应该是一个布尔值的变量,j是int或者float变量,如果j等于0,则i为true,否则i为false

岱岳区13660903534: c语言里面int x =0代表甚么 -
薄冉泮托: 定义1个整型的变量x,并为该变量赋初值0.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网