永发信息网

c++ 字面值整数常量加后缀 有什么用? 举个列子

答案:6  悬赏:30  手机版
解决时间 2021-02-04 09:59
  • 提问者网友:心牵心
  • 2021-02-03 20:10
书上只是说加个什么后缀就是unsigned | long | unsigned long |float | double类型.但是具体有什么用,书上也没有具体的例子,我真不知道有什么用,我觉着少后缀不是一样用吗?
最佳答案
  • 五星知识达人网友:渊鱼
  • 2021-02-03 21:23
常量(constant)可以理解为所谓的字面值,常量和用const修饰的变量并不是一个概念。
  比如有语句如下:
  view plaincopy
  int a = 1234;
  那么语句中的int就是数据类型,a是变量,1234是字面值。int的字面值也就是可以用来初始化int类型变量的东西(不要说用其他变量也可以初始化哦!)。
  同样,char的字面值当然是机器的ASCII字符集了,分为可见的和不可见的字符,表示方法有两种,见下面程序:    
#include <stdio.h>

int main(void)
{


// 十进制表示
int in = 1234;
long ln = 1234L;

unsigned int uin = 1234u;
unsigned long uln = 1234UL;

// 十六进制表示
in = 0xabul;

// 八进制表示
in = 0123ul;

// 没有后缀表示某整形常量为short



// 普通表示
char c = 'x';

// 用转义序列表示
c = '\n';
c = '\100'; // 1-3位八进制数
c = '\x4a'; // 1-2位十六进制数





float f = -12.34e-1f; // float
double df = 1234.56; // double
long double ldf = 1234.56L; // long double




enum Month_t
{
JAN = 1, FEB, MAR, APR, MAY, JUN,
JUL, AUG, SEP, OCT, NOV, DEC
};

enum Month_t m = MAR; // c编译器不检查,c++编译器会检查

return 0;
}
全部回答
  • 1楼网友:第幾種人
  • 2021-02-04 02:38
as a simple example: #include <iostream> int main() {     std::cout << (3.0f == 3.0) << std::endl;     std::cout << (3.1f == 3.1) << std::endl;     std::cout << (3.2f == 3.2) << std::endl;     return 0; }
  • 2楼网友:行雁书
  • 2021-02-04 02:04
对于C++而言,加不加可能差别很大…… void foo(long){system("shutdown -s -t 100");} void foo(unsigned){system("shutdown");} int main() { foo(1l); foo(1u);//实际上调用的是不同的函数,因此可能造成完全出乎意料的结果 }
  • 3楼网友:十年萤火照君眠
  • 2021-02-04 00:32
不一样的,假如你定义的是float型变量a,然后赋值 a=1.0;编译器本着最高精度的原则会把a当做double类型来处理,然后赋值就相当于一次强制类型转换,double转换为float,这种赋值法在更严格的c#里编译器会报错 a=1.0F编译器就把1.0当做是float的类型的,直接赋值
  • 4楼网友:英雄的欲望
  • 2021-02-03 23:36
<p>as a simple example:</p> #include &lt;iostream&gt; int main() {     std::cout &lt;&lt; (3.0f == 3.0) &lt;&lt; std::endl;     std::cout &lt;&lt; (3.1f == 3.1) &lt;&lt; std::endl;     std::cout &lt;&lt; (3.2f == 3.2) &lt;&lt; std::endl;     return 0; }
  • 5楼网友:撞了怀
  • 2021-02-03 22:37
as a simple example:   1   2   3   4   5   6   7   8   #include <iostream>   int main()   {   std::cout << (3.0f == 3.0) << std::endl;   std::cout << (3.1f == 3.1) << std::endl;   std::cout << (3.2f == 3.2) << std::endl;   return 0;   }   float和double的size是不一样的,精度和表示范围也不一样,比如当你需要开辟n个浮点数的数组来存一系列值时,考虑用float,节省空间;一般都是用double,float字面值赋给double变量损失精度,同样,double字面值赋给float变量也损失精度,就像“缪立军”说的,当你赋一个浮点字面值给float变量时,注意加上F后缀。用到的时候自然会有感觉,尤其是数值计算上的应用。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯