相关疑难解决方法(0)

C/C++中的字符大小('a')

C和C++中的字符大小是多少?据我所知,char的大小在C和C++中都是1个字节.

在C:

#include <stdio.h>
int main()
{
    printf("Size of char : %d\n", sizeof(char));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在C++中:

#include <iostream>
int main()
{
    std::cout << "Size of char : " << sizeof(char) << "\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

没有惊喜,它们都给出了输出: Size of char : 1

现在我们知道,字符表示为'a','b','c','|',...所以我只是修改了上面的代码对这些:

在C:

#include <stdio.h>
int main()
{
    char a = 'a';
    printf("Size of char : %d\n", sizeof(a));
    printf("Size of char : %d\n", sizeof('a'));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

Size of char …
Run Code Online (Sandbox Code Playgroud)

c c++ types

287
推荐指数
4
解决办法
27万
查看次数

为什么C字符文字而不是字符?

在C++中sizeof('a') == sizeof(char) == 1.这具有直观意义,因为它'a'是一个字符文字,并且sizeof(char) == 1由标准定义.

然而,在C中sizeof('a') == sizeof(int).也就是说,看起来C字符文字实际上是整数.有谁知道为什么?我可以找到很多关于这个C怪癖的提及,但没有解释为什么它存在.

c c++ sizeof char

101
推荐指数
7
解决办法
2万
查看次数

隐式类型促销规则

本文旨在用作关于C中隐式整数提升的常见问题解答,特别是由通常的算术转换和/或整数提升引起的隐式提升.

示例1)
为什么这会给出一个奇怪的大整数而不是255?

unsigned char x = 0;
unsigned char y = 1;
printf("%u\n", x - y); 
Run Code Online (Sandbox Code Playgroud)

例2)
为什么这会给"-1大于0"?

unsigned int a = 1;
signed int b = -2;
if(a + b > 0)
  puts("-1 is larger than 0");
Run Code Online (Sandbox Code Playgroud)

示例3)
为什么更改上例中的类型来short解决问题?

unsigned short a = 1;
signed short b = -2;
if(a + b > 0)
  puts("-1 is larger than 0"); // will not print
Run Code Online (Sandbox Code Playgroud)

(这些示例适用于16位或短16位的32位或64位计算机.)

c type-conversion implicit-conversion

50
推荐指数
2
解决办法
7417
查看次数

Sizeof字符串文字

以下代码

#include <iostream>    
using namespace std;

int main()
{
    const char* const foo = "f";
    const char bar[] = "b";
    cout << "sizeof(string literal) = " << sizeof( "f" ) << endl;
    cout << "sizeof(const char* const) = " << sizeof( foo ) << endl;
    cout << "sizeof(const char[]) = " << sizeof( bar ) << endl;
}
Run Code Online (Sandbox Code Playgroud)

输出

sizeof(string literal) = 2
sizeof(const char* const) = 4
sizeof(const char[]) = 2
Run Code Online (Sandbox Code Playgroud)

在32位操作系统上,使用GCC编译.

  1. 为什么要sizeof计算字符串文字的长度(所需空间)?
  2. 当给出时,字符串文字是否具有不同的类型(来自char*或char [])sizeof

c++ string sizeof

46
推荐指数
2
解决办法
4万
查看次数

C/C++中两个字符的总和

在C/C++中,当我想找到两个字符的总和时 - 我得到int的结果.
例如:

#include <stdio.h>
int main(){
   char a = 'a', b = 'b';
   printf("%d + %d = %d\n", sizeof(a), sizeof(b), sizeof(a + b));
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

打印

1 + 1 = 4
Run Code Online (Sandbox Code Playgroud)

为什么?

c c++

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

c ×4

c++ ×4

sizeof ×2

char ×1

implicit-conversion ×1

string ×1

type-conversion ×1

types ×1