传递参数使得指针来自整数而没有来自printf的强制转换

时间:2015-02-01 01:27:04

标签: java c pointers compilation integer

这可能是一个非常简单的问题但是我不明白C中的字符是如何工作的,因为我已经习惯了Java,但是我有这个代码:

char c = 'C';
printf(char2int(c));

指向另一个文件中的函数:

int char2int(char digit){}

但是我在编译时遇到了这个错误:

  

传递'char2int'的参数1使得指针来自整数而没有   cast [默认启用]

3 个答案:

答案 0 :(得分:1)

你不能在C中打印这样的整数。另外,我假设你试图获得char的ASCII码,你可以通过强制转换得到它。尝试这样的事情:

int char2int(char digit)
{
    return (int)digit;
}

void main()
{
    printf("%d", char2int('c'));
}

答案 1 :(得分:0)

此外,打印功能还会打印一种格式,它应该读取类似的内容 printf("%d\n",char2int(c));

"%d"打印int类型的参数 "\n"是换行符

最好使用gcc的警告来检测格式错误,使用-Wformat或-Wall作为编译器选项

答案 2 :(得分:0)

C中的字符和整数几乎相同,即每个字符都有一个整数,具体取决于ASCII character set。所以,如果你有int a=67,你可以在printf中使用它printf("%c",a),虽然a是一个int,你可以反过来。

但是关于你的代码,我应该说我尝试了你的代码,如果你纠正了使用printf的错误,它可以正常工作:

#include <stdio.h>
int char2int(char c)
{}

int main()
{
    char c='C';
    printf("%d",char2int(c));//printf must have at least 2 arguments to work correctly
}

如果您尝试使用此代码,您将获得67作为输入,这是&#39; C&#39;的ASCII代码;(但不要忘记ASCII字符集是有限的,每个数字都不是字符:) )