【问题标题】:Why are there parentheses around (int) in this example? [duplicate]为什么在这个例子中 (int) 周围有括号? [复制]
【发布时间】:2015-08-27 17:31:58
【问题描述】:
decimal d = 2;
int i = (int) d;

我已经多次看到括号包裹数据类型的情况。

为什么不直接使用int i = int d;

【问题讨论】:

  • 这是type casting的语法。
  • 它是变量d的转换,它被定义为decimalint的类型,以便允许将d分配给i而不是生成编译器警告。通常这不是一个好的做法,并且可能导致神秘的错误。
  • 我们不知道decimal 是什么,但我们知道您可以使用值2 初始化decimal。鉴于这些信息,演员表是不必要的; int i = d; 将隐式执行转换。如果演员表是不平凡的,那么明确表示可能是有意义的。 decimal 是什么?

标签: c syntax parentheses


【解决方案1】:

(int) 的用法称为casting(或type-casting)。从本质上讲,解释 转换 d的值asint(整数)并将其存储到i

换句话说,这是一种将类型转换为另一种类型的方法(取决于转换的有效性)。

顺便说一句,int i = int d; 是无效的声明。

【讨论】:

  • 我错过了什么?我的意思是,反对投票的原因,有人吗?
  • NMDV,但也许“解释”可能不如“转换”。
  • @chux 谢谢你的评论先生。我故意使用interpret,因为我不想让任何人误解d 的价值正在受到影响。我总是很难用完美的英语表达我的想法。您是否建议我将其更改为 convert
  • 不建议根据未明确理解其意图的匿名投票者更改答案。我建议“转换”,因为它符合 C 规范:“......结果来自强制转换操作(显式转换)。” C11 6.3 1
  • @chux 绝对是先生,您说的非常对。我们应该只遵守标准和标准。无论如何,我并不担心否决者,我很担心使答案正确。根据您的建议,我将其更改为convert,因为这是标准支持的内容。 :-)
【解决方案2】:

这是一种使用强制转换运算符将数据类型从一种类型转换为另一种类型的方法,用法如下:

  • (结果数据类型)要转换的表达式

【讨论】:

    【解决方案3】:

    您正在将 d 从十进制类型转换为 int 类型。这也发生在其他使用静态类型的语言中。

    【讨论】:

      猜你喜欢
      • 2016-04-21
      • 2015-11-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 2011-08-14
      • 1970-01-01
      相关资源
      最近更新 更多