Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
int可以包含char的值吗?_C - Fatal编程技术网

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()等函数。

A
char
只是一个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吗?