相关疑难解决方法(0)

什么是unsigned char?

在C/C++中,unsigned char用于什么?它与常规有什么不同char

c c++ char

456
推荐指数
13
解决办法
55万
查看次数

什么平台有8位字符以外的东西?

不时有人在SO上指出char(也就是"字节")不一定是8位.

似乎8位char几乎是通用的.我原本认为,对于主流平台,必须有一个8位char才能确保其在市场上的可行性.

现在和历史上,哪些平台使用的char不是8位,为什么它们与"普通"8位不同?

在编写代码时,考虑跨平台支持(例如,对于通用库而言),对于非8位平台,值得考虑的是什么char

在过去,我遇到过一些char16位的ADI DSP .我认为DSP是一种利基架构.(然后,当时手工编写的汇编程序很容易击败可用的C编译器可以做的事情,所以我在该平台上没有真正获得C的经验.)

c c++ cross-platform

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

有机器,sizeof(char)!= 1,或者至少CHAR_BIT> 8?

有机器(或编译器),在哪里sizeof(char) != 1

C99标准是否说sizeof(char)标准合规性实施必须正好1?如果有,请给我部分编号和引文.

更新: 如果我有一台机器(CPU),它不能寻址字节(最小读取是4个字节,对齐),但只有4-s的字节(uint32_t),这个机器的编译器可以定义sizeof(char)为4吗? sizeof(char)将是1,但char将有32位(CHAR_BIT宏)

Update2: 但是sizeof结果不是BYTES!这是CHAR的大小.char可以是2个字节,或者(可能是)7位?

Update3: 好的.所有机器都有sizeof(char) == 1.但机器有CHAR_BIT > 8什么?

c standards sizeof c99 char

90
推荐指数
3
解决办法
2万
查看次数

1字节!= 8位的系统?

我一直在读句子

不要依赖大小为8位的1字节

使用CHAR_BIT而不是8作为常量来转换位和字节

等等.今天有什么现实生活系统,这是真的吗? (我不确定C和C++之间是否存在差异,或者它是否与语言无关.如果需要,请重新加入.)

c c++ history byte computer-architecture

85
推荐指数
6
解决办法
2万
查看次数

char保证恰好是8位长吗?

就这样.没有找到任何类似的话题所以请耐心等待.

c types char

59
推荐指数
5
解决办法
7万
查看次数

CHAR_BIT是> 8?

ISO C标准要求CHAR_BIT至少为8.

POSIX强制CHAR_BIT等于8,并且(几乎?)所有使用八位字节的网络和通信标准,是否有任何当代C实现CHAR_BIT> 8?

(注意:我对使用18或36位字的历史计算机体系结构不感兴趣.这是关于C的真正问题,因为它在当前的硬件上使用;考虑使用C99或更高版本的系统).

c byte char bit

15
推荐指数
3
解决办法
1117
查看次数

C:将字节数组声明为 uint8_t 有问题吗?

我正在开发一个使用字节数组的小型网络应用程序。传统上,这些将用类似的东西来声明char buf[] = ...

这似乎是大多数教程中(仍然?)完成的方式,但它存在一个问题,即它可能会掩盖实际发生的情况,例如,当您尝试打印这样的数组并忘记并非每个字符都是可见字符时。

有些人建议您应该chars完全停止使用,而使用现代的uint8_t. 我发现这非常有吸引力,主要是基于显式优于隐式的原则。

那么,将这些类型的数组声明为 是否有问题uint8_t buf[] = ...

c arrays char stdint uint8t

5
推荐指数
1
解决办法
870
查看次数

字大小混乱

据我所知,1 char = 1字节= 8位(32位系统).

char c=0xffff0000;  //wrong
Run Code Online (Sandbox Code Playgroud)

那么为什么char只允许8位以及文件中的每个字符也是8位长度.

谢谢.

c++ byte char bit

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

这段代码发生了什么?

有人可以帮我解释一下代码吗?

为何32位UINT

为什么0xff

这里有4个正确的转变吗?

int writeUINT32little(FILE *f, UINT32 i)
{    
    int rc;    
    rc = fputc((i & 0xff), f);    
    if (rc == EOF)       return rc;    
    rc = fputc(((i >> 8) & 0xff), f);    
    if (rc == EOF)       return rc;    
    rc = fputc(((i >> 16) & 0xff), f);    
    if (rc == EOF)       return rc;    
    return fputc(((i >> 24) & 0xff), f);
}
Run Code Online (Sandbox Code Playgroud)

c endianness bitwise-operators

3
推荐指数
1
解决办法
401
查看次数

如何获取unsigned char的每一位的值?

在c中,我知道unsigned char的大小为1字节(= 1个八位字节= 8位),并且我知道unsigned char实际上是0到255之间的整数值,现在如果我有以下unsigned char变量:

unsigned char c = 255; //(this value can be any value from 0 to 255)
Run Code Online (Sandbox Code Playgroud)


如何获得包含 8 个元素的表,指示该变量的每个位值(0 或 1)?(像这样:{1, 1, 1, 1, 1, 1, 1, 1})有没有简单的方法可以在c中做到这一点?

c char bit

3
推荐指数
1
解决办法
7974
查看次数

由于释放内存导致的分段错误

我一直在努力解决这个问题,但无济于事.在下面的代码中,我使用了一个char指针(all_seq),但是当我释放它时,在代码的末尾,有时它会出现段错误.我有时说,因为它显然取决于输入文件.使用小输入文件,它很好.有一个大的,它也没关系.对于中等大小的文件,它是段错误的.我只是想不通为什么......

任何想法将不胜感激.谢谢.

/* SeqProb (Sequence Probability) - 2012/03/13 */
/* Given a series of aligned sequences -in one file, one per line- this program calculates the probability of having, in each location, the letter in the first sequence. */

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

FILE *input_file;
FILE *output_file;

///////////////////////////////
// DECLARATION OF FUNCTIONS: //
///////////////////////////////
int GetSize(FILE *file, int *length, int *lines);
double CalcProb(char *one_seq);

//////////////////////////////////////////////////////////////////
// ************************************************************ //
// **************        START MAIN BLOCK        ************** //
// …
Run Code Online (Sandbox Code Playgroud)

c free pointers segmentation-fault

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