声明中的(int)有多重要?

时间:2018-02-13 20:06:56

标签: c++

如果我有:

#include <iostream>

int main()
{
  float a,b,c;

  b = 7;
  c = 2;
  a = (int) (b / c);

  std::cout << a; 
}

(int)是否只影响cout期间的数据类型,以便'a'可以打印为整数,还是影响'a'作为变量将其更改为'int'?

4 个答案:

答案 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

希望这个帮助