gpt4 book ai didi

c - 在 gcc 中编译 c 时收到有关强制转换 "from pointer to integer of different size"的警告

转载 作者:行者123 更新时间:2023-11-30 14:39:21 25 4
gpt4 key购买 nike

我正在尝试学习 C,并且正在尝试将 char 转换为 int 以提取 ASCII 值。然而,当我尝试在 GCC 中编译它时,我收到以下警告:

warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
ascii = (int) letter;

我正在尝试编写一个简单的程序,该程序请求单个字符,扫描它,然后将其转换为 int 以获取 ASCII 值,并打印该值。我已将 letter 变量初始化为 char*,将 ascii 初始化为 int。我尝试过对 letter 变量使用占位符%s%c%1s,但是这不行。

这是代码:

#include <stdio.h>

char* letter;
int ascii;

int main(){
printf("Please input a charcter:");
scanf("%s", letter);
ascii = (int) letter;
printf("\n The ASCII value of %s is %d.\n", letter, ascii);
}

我期望发生的是“请输入一个字符:”将打印,然后键入一个字符,例如a,然后例如,它会打印““a 的 ASCII 值是 97”。

相反,当我输入某些内容时,它会打印“(null) 的 ASCII 值为零。” 在编译期间,它会打印出上面列出的错误。这不是应该发生的事情。

如何解决这个问题?

最佳答案

您不是将 char 转换为 int,而是将指向 char 的指针转换为 int。

int main(){
// define as an actual char, not a char*
char letter;
int ascii;

printf("Please input a character:");
// scan a character, not a string. Pass in the address of the char
scanf("%c", &letter);
ascii = (int)letter;
printf("\n The ASCII value of %c is %d.\n", letter, ascii);
}

关于c - 在 gcc 中编译 c 时收到有关强制转换 "from pointer to integer of different size"的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56122266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com