C语言中 一个变量经过强制类型转换后的值会保存到其存储单元里吗;
作者&投稿:南俗 (若有异议请与网页底部的电邮联系)
(x+y) 把x+y的结果转换为 整型 强制类型转换是通过类型转换运算来实现的。
变量的类型永远都不会变!
强制类型转换只是给编译器看的,编译器一般要求参与操作的元素符合指定的类型,用强制类型转换只是告诉编译器访问这个变量的方式,并不改变这个变量的值。+和/虽然都是数学操作符,但还是有些区别,/只能用于整型,而+没有这个限制。所以如果a是整型,a/=100成立。
当然存储到对应的存储单元里,a+=100,是把a里的值加上100后再存到a里去,谈不上成不成立。
不会保存在存储单元里
a+=100成立,那a/=100成立吗?
也成立
加减乘除都可以这样连着写
变量 只有通过赋值 才能改变 它的 值。 没有 重新 赋值,它的值是 不会 变化 的。
例如 int a = 123; double b = (double) a;
那末, a 的值 还是 整型 123。 b 的值 是 double 型 123.0;
---------------------------------------------------------
a+=100 就是 a = a + 100; 也就是 a 的新值 = a 的老值 + 100;
a/=100 就是 a = a / 100; 也就是 a 的新值 = a 的老值 / 100;
这两个计算都成立。
帛油合贝: 强制类型转换的一般形式为:(类型说明符)(表达式),例如: (float) a 把a转换为浮点型,(int)(x+y) 把x+y的结果转换为 整型 强制类型转换是通过类型转换运算来实现的.功能是把表达式的运算结果强制转换成类型说明符所表示的类型. 注意事项:①类型说明符和 表达式都必须加括号(单个 变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了.②无论是 强制转换或是自动转换,都只是为了本次运算的需要而对 变量的数据长度进行的临时性转换,而不改变数据说明时对该 变量定义的类型.
建始县17742529092: C语言中 一个变量经过强制类型转换后的值会保存到其存储单元里吗; - ?
帛油合贝: 变量 只有通过赋值 才能改变 它的 值. 没有 重新 赋值,它的值是 不会 变化 的.例如 int a = 123; double b = (double) a; 那末, a 的值 还是 整型 123. b 的值 是 double 型 123.0;--------------------------------------------------------- a+=100 就是 a = a + 100; 也就是 a 的新值 = a 的老值 + 100;a/=100 就是 a = a / 100; 也就是 a 的新值 = a 的老值 / 100;这两个计算都成立.
建始县17742529092: C语言数据强制转换 - ?
帛油合贝: 程序要多去调试啊,这个很简单的啊 给你个代码参考吧 int main() { int a = -34; //-34是开始的值,你可以设个值 unsigned int b = (unsigned int)0-(unsigned int)a; return 0; } 整理成一般表达式为:int a = originalNumber;//原始值 unsigned int b = (unsigned int)0-(unsigned int)a;//转换后的绝对值
建始县17742529092: C中的常量的强制转换如何使用,举一个简单的例子 ?
帛油合贝: 在C语言里强制类型转换的方法非常简单,只要在要转换的变量前用括号确定要转换的类型即可,如要将一个double型的变量强制转换为int类型,代码如下: double x = 3...
建始县17742529092: C语言指针中怎样强制转换变量类型? - ?
帛油合贝: 在前面用括号将要转换成的数据类型括起来,即(要转换的类型)待转换的变量…表达能力有限
建始县17742529092: C语言的一个强制数据类形转换问题. - ?
帛油合贝: 这个涉及到内存截断的问题,printf("%d",(double)c);你设定的是整形格式输出,但你又将c转换为double型了,这是在输出内存段的数据为0,所以输出为0了,要达到预期的结果,你可以格式化为"%lf".
建始县17742529092: C语言里面的强制类型转换是什么啊? - ?
帛油合贝: 前面定义int a; 后面用(double)a 强制转换成双精度
建始县17742529092: C语言中强制类型转换究竟改变了什么? - ?
帛油合贝: 改变了地址跨度 比如 int* a; int占4个字节,这样a+1的时候实际上是加上4个地址长度 如果(char*)a + 1的话,由于char占一个字节,所以这个加一实际上是加上一个地址长度.
建始县17742529092: C语言中的“强制类型转换”是怎样实现的??
帛油合贝: (type)<expression> 其中,type为类型描述符,如int,float等.<expression>为表达式.经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如: int nVar=0xab65; char cChar=char (nVar); 上述强制类型转换的结果是将整型值0xab65的高端两个字节删掉,将低端两个字节的内容作为char型数值赋值给变量cChar,而经过类型转换后nVar的值并未改变.
建始县17742529092: C语言中强制类型转换什么时候用到 - ?
帛油合贝: 比如说 float n=3.14, intN; 你要得到n的整数部分, 那么 整数部分 intN=(int)n; 这里就用到了强制类型转换,将float型 强制转换为int型.