在C中定义值时,编译器如何选择数据类型

Die*_*sel 4 c c++ types

关于编程的一般问题:当你用C(或我想的任何语言)定义一个值时,编译器如何知道如何处理这个值?例如:

#define CountCycle  100000
Run Code Online (Sandbox Code Playgroud)

我假设CountCycle是一个"长整数"数据类型,但这只是一个假设.我想它也可能是a float,a double (不是最大int约为32k),等等.

编译器如何选择#define值的数据类型?我没有申请这个问题的答案; 我只是好奇.

Bat*_*eba 12

编译器确实没有这样的事情.该预处理 substitues 100000CountCycle.

一旦完成替换,编译器就可以接管.如果它可以适合该范围,则100000具有该类型,int如果不能,则具有该类型long.

请参阅C++参考C参考.

  • 你怎么把15个字符变成'不' (10认同)
  • @RickAstley找出如何将15个字符变成'不',[见这里](https://www.youtube.com/watch?v=dQw4w9WgXcQ) (4认同)
  • @RickAstley这是U + 034F组合GRAPHEME JOINER. (2认同)
  • @Diesel:查看我添加的两个参考文献.这告诉你整数文字的*type*.请注意,由于科学记法,如果您的平台支持它,`2E500`将是浮点字面值. (2认同)