相关疑难解决方法(0)

将C++中的字符串转换为大写字母

如何将字符串转换为大写字母.我通过谷歌搜索发现的例子只需要处理字符.

c++ string

258
推荐指数
16
解决办法
48万
查看次数

有符号/无符号字符之间的区别

所以我知道有符号和无符号int之间的区别在于,有一些用于表示数字是正数还是负数,但这如何适用于char?角色怎样才能是积极的还是消极的?

c types

130
推荐指数
5
解决办法
23万
查看次数

如何在C中打印unsigned char?

我正在尝试将char打印为正值:

char ch = 212;
printf("%u", ch);
Run Code Online (Sandbox Code Playgroud)

但我得到:

4294967252
Run Code Online (Sandbox Code Playgroud)

我如何212进入输出?

c printf

53
推荐指数
3
解决办法
20万
查看次数

使用gcc时,是什么原因导致char被签名或取消签名?

如果char在C(使用gcc)中签名或未签名,会导致什么?我知道,标准并没有规定一个比其他,我也可以检查CHAR_MIN,并CHAR_MAX从limits.h中,但我想知道是什么原因引发了另一种使用GCC时

如果我从libgcc-6读取limits.h,我看到有一个宏__CHAR_UNSIGNED__定义了一个"默认"char签名或无符号但我不确定这是由编译器在(他)的构建时间设置的.

我试图列出GCC预定义的makros

$ gcc -dM -E -x c /dev/null | grep -i CHAR
#define __UINT_LEAST8_TYPE__ unsigned char
#define __CHAR_BIT__ 8
#define __WCHAR_MAX__ 0x7fffffff
#define __GCC_ATOMIC_CHAR_LOCK_FREE 2
#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
#define __SCHAR_MAX__ 0x7f
#define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
#define __UINT8_TYPE__ unsigned char
#define __INT8_TYPE__ signed char
#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
#define __CHAR16_TYPE__ short unsigned int
#define __INT_LEAST8_TYPE__ signed char
#define __WCHAR_TYPE__ int
#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
#define __SIZEOF_WCHAR_T__ 4
#define __INT_FAST8_TYPE__ signed char
#define …
Run Code Online (Sandbox Code Playgroud)

c gcc

49
推荐指数
5
解决办法
5914
查看次数

为什么C或C++标准没有明确地将char定义为signed或unsigned?

int main()
{
    char c = 0xff;
    bool b = 0xff == c;
    // Under most C/C++ compilers' default options, b is FALSE!!!
}
Run Code Online (Sandbox Code Playgroud)

C或C++标准都没有将char指定为有符号或无符号,它是实现定义的.

为什么C/C++标准没有明确地将char定义为有符号或无符号以避免像上述代码那样的危险误用?

c c++ compiler-construction standards types

43
推荐指数
1
解决办法
2874
查看次数

getchar/fgetc和putchar/fputc中int和char的区别?

我正在尝试自己学习C,我有点困惑getcharputchar:

1

#include <stdio.h>

int main(void)
{
    char c;
    printf("Enter characters : ");
    while((c = getchar()) != EOF){
      putchar(c);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

2

#include <stdio.h>

int main(void)
{
    int c;
    printf("Enter characters : ");
    while((c = getchar()) != EOF){
      putchar(c);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

C库函数int putchar(int c)将参数char指定的字符(unsigned char)写入stdout.

C库函数int getchar(void)从stdin获取一个字符(一个unsigned char).这相当于以stdin作为参数的getc.

这是否意味着putchar()同时接受intchar或其中一方以及getchar()我们应该使用一个intchar

c

25
推荐指数
1
解决办法
5595
查看次数

为什么字符串使用char*?

为什么C/C++ stdlibs中的大多数字符串函数都需要char*指针?

的签署岬char在标准甚至没有规定,但最现代的编译器(GCC,MSVC)对待char作为默认签名.

什么时候将字符串视为(可能)有符号字节?AFAIK在任何字符集中都没有低于零的有意义的字符值.对于某些字符串操作,unsigned char无论如何都必须强制转换值.

那么为什么stdlibs会使用char*?甚至C++特定的方法,如string::string(const char *);

c c++

21
推荐指数
3
解决办法
1198
查看次数

C++类型unsigned long int

unsigned long int equivlant来unsigned long?在C++中

在我看来,他们是一样的.但是我看到有些人仍然在代码中使用unsigned long int.不明白为什么?任何人都可以帮我解释一下

#include <stdio.h>

int main() {
    unsigned long int num = 282672; 
    int normalInt = 5;
    printf("");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++

18
推荐指数
1
解决办法
4万
查看次数

即使char已签名,'a'和'0'也始终具有正值?

根据环境和编译器设置,char默认情况下类型可以是有符号或无符号的,这意味着8位2s补码系统上单个字符常量的值范围可以是-128..1270..255.

在无处不在的ASCII字符集中,其ISO-8859-X扩展或UTF-8编码,大写和小写字母以及数字的值低于127.

但是EBCDIC字符集不是这种情况:

'A'是0xC1,'a'是0x81并且'1'是0xF1.

由于这些值大于127,是否意味着该类型char必须在8位EBCDIC系统上无符号?或者可以'a','A''1'有负值?

其他字符集怎么样?字母或数字可以有负值吗?

c character-encoding language-lawyer

13
推荐指数
1
解决办法
373
查看次数

为什么无符号类型在arm cpu中效率更高?

我正在阅读手册并提出这个建议,但没有提到原因.

为什么无符号类型更快?

arm

10
推荐指数
1
解决办法
1454
查看次数