int可以包含char的值吗?
对于初学者的问题,很抱歉,我已经编写了以下代码:int可以包含char的值吗?,c,C,对于初学者的问题,很抱歉,我已经编写了以下代码: #include <stdio.h> int main() { int y = 's'; printf("%c\n", y); return 0; } #包括 int main() { int y='s'; printf(“%c\n”,y); 返回0; } 编译器(Visual Studio 2012)没有警告我数据丢失的可能性(如从int到float)。
#include <stdio.h>
int main()
{
int y = 's';
printf("%c\n", y);
return 0;
}
#包括
int main()
{
int y='s';
printf(“%c\n”,y);
返回0;
}
编译器(Visual Studio 2012)没有警告我数据丢失的可能性(如从int
到float
)。我在谷歌中没有找到答案(或者没有正确搜索)。
我想知道这是否是因为
int
在内存中的存储是4,它可以作为char
保存1个内存存储我对此不确定
提前谢谢。是的,很好。字符是简单的小整数,因此当然较小的值适合较大的
int
变量,没有什么需要警告的
许多标准C函数使用
int
来传输单个字符,因为它们还可以表示EOF
(这不是字符)。是的,这很好。字符是简单的小整数,因此当然较小的值适合较大的int
变量,没有什么需要警告的
许多标准C函数使用
int
来传输单个字符,因为它们还可以表示EOF
(这不是字符)。在C中,所有字符都存储在中,并根据。这允许使用strcmp()等函数。在C中,所有字符都存储在中,并根据。这允许使用strcmp()等函数。Achar
只是一个8位整数。int
是一个较大的整数(在MSVC 32位构建中,它应该是4字节)
's'
对应小写字母“s”的大小写,即它是整数115
因此,您的代码类似于:
int y = 115; // 's'
char
只是一个8位整数。int
是一个较大的整数(在MSVC 32位构建中,它应该是4字节)
's'
对应小写字母“s”的大小写,即它是整数115
因此,您的代码类似于:
int y = 115; // 's'
尽管有外观,但在您的示例中任何地方都没有
char
由于历史原因,字符常量实际上是int
s,因此
int y = 's';
实际上是将一个int
分配给另一个
此外,printf中的%c格式说明符实际上希望接收一个
int
参数,而不是char
。这是因为将应用于可变参数,因此在调用函数之前,对printf的调用中的任何char
都会升级为int
。尽管在您的示例中没有char
由于历史原因,字符常量实际上是int
s,因此
int y = 's';
实际上是将一个int
分配给另一个
此外,printf中的%c格式说明符实际上希望接收一个
int
参数,而不是char
。这是因为函数应用于可变参数,因此在调用函数之前,对printf的调用中的任何char
都会升级为int
。字符实际上是由整数表示的(请看ASCII表示法)。此外,char是8位的,int更大(取决于平台,而不是指定为特定的大小)。char总是1个八位组,int总是更大(实际大小取决于不同的因素,但总是更大),文字字符的类型为int
:“#”
字符实际上是由整数表示的(请看ASCII表示法)。此外,char是8位的,int更大(取决于平台,而不是指定为特定的大小)。char总是1个八位组,int总是更大(实际大小取决于不同的因素,但总是更大),文字字符的类型为int
:“#”
,因此我可以根据其ASCII值打印一个带有%c
的整数?假设y=115,我这样写:printf(“%c\n”,num)
,这将打印s?这样我就可以根据他的ASCII值打印一个带有%c
的整数了?假设y=115,我这样写:printf(“%c\n”,num)
,这会打印s吗?