如果我有:
#include <iostream>
int main()
{
float a,b,c;
b = 7;
c = 2;
a = (int) (b / c);
std::cout << a;
}
(int)是否只影响cout期间的数据类型,以便'a'可以打印为整数,还是影响'a'作为变量将其更改为'int'?
答案 0 :(得分:4)
(int)
cout
仅影响a
期间的数据类型,以便a
可以打印为整数,还是会影响int
作为变量将a = (int)(....);
更改为{ {1}}?
都不是。
a
仅更改分配给a
的内容。在这种情况下,它会截断浮点数,并将数字的整数部分指定为a
。
它不会更改cout << a
中处理a
的方式。您会注意到输出中的截断值。但是,原因是前一个语句中的截断值已分配给cout << a
,而不是因为a
的处理方式不同。
它不会将int
的类型更改为library(tidyverse)
mydf %>%
group_by(chemical, species) %>%
mutate(zero = if_else(condition = max(scores)==0, true = TRUE, false = FALSE)) %>%
filter(scores==0&zero==TRUE|scores>0&zero==FALSE) %>%
arrange(chemical, species, scores) %>%
distinct(chemical, species, .keep_all = TRUE) %>%
select(-zero)
。在C ++中无法更改变量的类型。它在整个计划期间保持不变。
答案 1 :(得分:1)
Cast不会更改为其指定转换值的变量类型。
在您的情况下,b/c
的结果会被投放(截断)为int
,然后会将其提升为float
。
答案 2 :(得分:1)
在这种特殊情况下,它会将float
值,b/c
的结果转换为int,然后a
仍为float
,将其转换为float
。
这是一种简单的,有时甚至是有问题的方法,可以将某些内容舍入为整数值。
请记住,在C ++中,变量永远不会改变它们的基本类型。定义为float
的东西永远保持浮动。您可以将其他值强制放入相同的内存位置,您可以重铸它们,但变量本身始终具有固定的内在类型。
答案 3 :(得分:1)
在这种情况下,int
是一个强制转换数据类型。
计算机在想什么
主要功能内部:
float a, b, c;
声明data_Type float的3个变量。
b = 7;
c = 5;
将值7分配给b,将值5分配给c。
a = (int) (b / c);
A等于b / c ==&gt; 7/5 ==&gt; 1.4,等等,程序员要求将数据转换为int,所以1.4 ==&gt; 1
std::cout << a;
Output: 1.0
希望这个帮助