c++里写数字常量时,有没有可用的千分位分隔符。

heerozh 2008-11-01 12:04:47
直接在代码里写数字,因为数字太大看起来很累,能不能有类似int a = 10,000的写法。我试过空格不行。
...全文
774 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
heerozh 2008-11-03
  • 打赏
  • 举报
回复
看了回复思路开朗很多,感谢各位的解答和帮忙up的。

其实我只是想偷懒一下,按理说应该自己把数字都写到配置文件中,这才是最好的习惯 :P
lann64 2008-11-02
  • 打赏
  • 举报
回复
好像看到了Literate Programming编程的味道了。
自己写个预处理程序,然后按你自己的习惯写程序,把通过预处理的东西交给编译器就得了,不仅能实现千分位逗号,只要能实现到c转换,什么想法都可以实现。
Jarrys 2008-11-02
  • 打赏
  • 举报
回复
up
dfkjsdhfks 2008-11-02
  • 打赏
  • 举报
回复
define一下吧,以后只要记住那个特烦人的数的代号就ok了.
太乙 2008-11-02
  • 打赏
  • 举报
回复
up一下~~
macfan 2008-11-02
  • 打赏
  • 举报
回复
加个注释就行,不会很难看代码吧..
不建议用函数 那样运行明显会慢...
很大的常量用#define预定义就行了..
060 2008-11-02
  • 打赏
  • 举报
回复
补充一句
对于无符号整数
int e = MInt(5, 6, 9, 55);
已经溢出了。
060 2008-11-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 frisky_lobo 的回复:]
自己重载一下函数=表达式了
[/Quote]

对于自定义的类型可以重载 =表达式。
但是对于内置类型就不可以了。

楼上的提到可以使用内联函数,还可以使用函数模板,
使用函数重载以应付多个参数(逗号)的情况,只需要四个重载就可以了,因为最大的整数不过42亿。

template<class Type>
Type MInt(Type a)
{
return a;
}
template<class Type>
Type MInt(Type a, Type b)
{
return a * 1000 + b;
}
template<class Type>
Type MInt(Type a, Type b, Type c)
{
return MInt(a, b) * 1000 + c;
}
template<class Type>
Type MInt(Type a, Type b, Type c, Type d)
{
return MInt(MInt(a, b) * 1000, c) * 1000 + d;
}
int main(int argc, char* argv[])
{
//printf("DDD");
int c = MInt(10, 5);
int d = MInt(1, 2, 3);
int e = MInt(5, 6, 9, 55);
cout<< c << endl;
cout<< d << endl;
cout<< e << endl;
}


kiffa 2008-11-01
  • 打赏
  • 举报
回复
// 纯属吃饱撑的
int i = atoi("10""000""000");

或者
#define p(x) atoi(x)
int i = p("10""000""000");

但楼主这个要求本身是很合理的,所以从情理上来说应该有解决的办法。
帅得不敢出门 2008-11-01
  • 打赏
  • 举报
回复
如果你自己实现的话 可能会产生与其他程序不兼容的状况
至少效率会降低
或者编译器层面做优化 编译前加,号 编译时编译器分析把,号去掉 编译连接
baihacker 2008-11-01
  • 打赏
  • 举报
回复
1楼的方法较好.
zhyinty 2008-11-01
  • 打赏
  • 举报
回复
这样不行的,数字是数字,字符是字符
liecs 2008-11-01
  • 打赏
  • 举报
回复
这个,应该不行吧,也许你可以 int a=pow(10,6); 哈哈
matrixdwy 2008-11-01
  • 打赏
  • 举报
回复
自己在后面加个注释不就得了
qkhhxkj102 2008-11-01
  • 打赏
  • 举报
回复
帮顶
frisky_lobo 2008-11-01
  • 打赏
  • 举报
回复
自己重载一下函数=表达式了
镜机 2008-11-01
  • 打赏
  • 举报
回复
想办法用函数实现下,计算下长度?
redleaves 2008-11-01
  • 打赏
  • 举报
回复
写个内联函数应该可以...而且没什么开销
zenny_chen 2008-11-01
  • 打赏
  • 举报
回复
我有过ARC的编译器。那里可以将数字用_进行分割,比如:
int a = 10_000;
int b = 0x2x0001_0000;
int c = 0xabcd_1234;
等等。
jia_xiaoxin 2008-11-01
  • 打赏
  • 举报
回复
在C++的数值常量中不能有逗号、空格或其他非法字符
你或者可以写一个将字符串转化为整型的函数来实现
但写注释是最明了的方式了。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧