【发布时间】:2015-02-16 18:22:32
【问题描述】:
我有一个字符串(五个字符),我尝试进行 int 转换以将整个字符串转换为唯一值。它有效,但我想知道转换过程中会发生什么。例如
int main(){
char s[6];
int number;
Scanf("%s",s);
Number=(int)s;
Printf("%d",number);}
谢谢
【问题讨论】:
-
请更新您的问题,使代码与您实际编译的代码相同。复制粘贴,不要重复输入。 (提示:
Int和int在 C 中是不同的。) -
第一:
char s[5];没有足够的空间容纳 5 个字符的字符串;您需要考虑'\0'终止符。 -
您可以按照您显示的方式进行转换(如果编译正确),但您会将字符串的地址转换为
int,而不是字符串中文本数字的值。有多种方法可以做到这一点,例如sscanf()和atoi()。更好的是scanf("%d", &number); -
我正在使用这种方法将用户密码从字符串转换为数字。这不是地址,因为在不同的机器上,相同的字符串返回相同的整数。
-
您的
Scanf()和Printf()函数是非标准的(而number和Number是不同的变量)。据推测,您的意思是scanf()和printf(),但 C 是一种区分大小写的语言,如果您以大写字母开头,没有人能确定您的意思。此外,行尾的}对C 来说是可怕的、可恶的风格;完全不推荐。 (奇怪的是,当您不需要时,您可以在名称上使用大写字母,但当您确实需要时,却不能将 'i' 设为 'I')。
标签: c string casting type-conversion