R. *_*des 13
"三"."3"."Threeeeeeeeeeeeeeeeee"."03"."003"."0003"."00000000000000003"."III"."3"."11"."3"."三"."Γ'".
上述所有事情有什么共同之处?他们都是三号†的代表.表示不同吗?是.他们代表的数字是不同的吗?不,只有一个三号.
三号与三号无法区分,因为只有三号.然而,数字3的两个表示可以彼此不同,因为它们可以使用不同的符号或不同的规则来将符号组合在一起.
int
使用C++(以及几乎所有具有类似数据类型的语言)来处理数字.因此,如果将数字3分配给这种类型的变量,则得到数字3.你没有得到它的任何特定表示.这是第三名.当你要求它时,你可以得到它的表示,就像你输出它一样.
那么,如果它们代表相同的数字,你如何区分"3"和"0003"之间的区别?简单:你不使用数字.
这里的根本问题是你认为你正在处理数字,但事实并非如此.您关心的是陈述,而不是数字本身.因此,您应该使用可以处理表示的数据类型,而不是可以处理数字的数据类型.我相信最简单的解决方案就是使用std::string
.
†按顺序:英语,带有印度 - 阿拉伯数字的十进制英语,带有无关"e"的英语表示语音中较长的最终声音,C表示基数为8,C#表示基数为8,附加多余零,基数为八十七个印度 - 阿拉伯数字和三个冗余零,三十个印度 - 阿拉伯数字和十二个冗余零,罗马数字,东方阿拉伯数字,两个印度阿拉伯数字,天城数字,中国数字和希腊数字.