[英]Which variables should I typecast when doing math operations in C/C++?
[英]How typecasting in c behave when typecast it to longer data type than actual while doing assigenment operation
这里tv_sec是4字节长,但是正在将其类型转换为8字节变量。 变量“ t”可能在8个字节中有一些垃圾值。 该值将如何填充剩余的4个字节。
{
long long t;
gettimeofday(&tv,NULL);
t = (long long)(tv.tv_sec) * 1000 ;
// Some Operation
}
根据C标准:6.3.1.3(强调型):
将具有整数类型的值转换为_Bool以外的其他整数类型时,如果该值可以由新类型表示,则该值不变 。
tv_sec
的类型是否为整数类型? 是。
tv_sec
的类型为time_t
。 但是,C标准未指定time_t
in的基础类型。 在符合POSIX的系统中, time_t
表示秒数,通常以带signed integer
。
强制转换会导致转化。 转换数字类型时,如果新类型可以表示旧类型中的值,则结果将是该值,且保持不变。
因此,当转换为较宽的数字类型时,C实现会产生需要任何位来表示输入值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.