Tag: 类型

分配给类型时不兼容的类型 – C

我在C中的一个项目中使用Code :: Blocks。 当我编译时,我得到错误:“在第81,85,90,91行上从类型’double’分配类型’double *’时不兼容的类型”。 该项目是采用单位转换工具并包含多个函数,而不是main()下的所有内容。 http://pastebay.net/1181184

使用%d insde printf打印浮点值会产生意外输出

#include #include using namespace std; int main() { float f=11.11; printf(“%d”,f); } 当我在dev c ++中执行以下代码时,它给出输出-536870912。 当我在在线教程上执行相同的代码时,点编译器在每次运行时都会有所不同。 背后的原因是什么?

为什么C数据类型在这台机器上有这些特定的大小?

我注意到C数据类型的大小可能会有所不同 。 我想知道这台机器产生的具体尺寸是什么原因 : $ cat sizes.c int main() { printf(“void *:%ld\n”, sizeof(void *)); printf(“char:%ld\n”, sizeof(char)); printf(“short:%ld\n”, sizeof(short)); printf(“int:%ld\n”, sizeof(int)); printf(“long:%ld\n”, sizeof(long)); printf(“long long:%ld\n”, sizeof(long long)); printf(“float:%ld\n”, sizeof(float)); printf(“double:%ld\n”, sizeof(double)); printf(“long double:%ld\n”, sizeof(long double)); return 0; } $ ./sizes void *:8 char:1 short:2 int:4 long:8 long long:8 float:4 double:8 long double:16 这是因为我的机器是: Linux呢? 64位? Ubuntu的? […]

找到正确的c类型

我一直在C中遇到新的类型。最近,我花了很长时间试图获得一个size_t变量来接受getline()的输出(可能由此误导)只是为了最终注意到ssize_t (是的,两个s的) )是正确的类型。 是否有某个可能的变量声明的列表?

在指数和小数部分之间转换具有不同位数的格式

我试图刷新浮点数。 我正在阅读一个练习,要求从格式A转换为:k = 3,4比特分数和偏差= 3到格式B,其中k = 4,3比特分数和偏差7。 我们应该在必要时进行圆 格式之间的示例: 011 0000 (Value = 1) =====> 0111 000 (Value = 1) 010 1001 (Value = 25/32) =====> 0110 100 (Value = 3/4 Rounded down) 110 1111 (Value = 31/2) =====> 1011 000 (Value = 16 Rounded up) 问题:我无法弄清楚转换的工作原理。 首先,我设法在某些情况下正确地做到了,但我的方法是将格式A的位模式转换为十进制值,然后以格式B的位模式表示该值。 但有没有办法以某种方式从一位模式转到另一种模式而不进行此转换,只知道我们将e扩展1位并将分数减少1?

返回参数不起作用 – 给我一些奇怪的错误

这是一个应该从字符串创建子字符串的简单程序,然后它应该将子字符串作为可以打印出来的东西返回。 它实际上是一个练习,只能改变子串函数。 问题是我找不到不会引发各种警告和错误的返回类型。 我该如何更改退货类型? static void panic(const char *serror) { printf(“%s”, serror); exit(1); } static void *xmalloc(size_t size) { void *ptr; if (size == 0) panic(“Size is 0!\n”); ptr = malloc(size); if (!ptr) panic(“No mem left!\n”); return ptr; } static char *substring(const char *str, off_t pos, size_t len) { char out [len]; int index; for(index […]

如何在c中找到所有数据类型的限制

我们都知道我们在c中使用的所有数据类型都有固定限制 char range from -128 to 127 integer store value from -2147483648 to 2147483647 像这样都有修复限制。 我的问题非常简单,如果我们使用头文件,我们可以很容易地找出所有数据类型的范围。 但是有没有任何过程或逻辑可以通过它我们找到所有这些数据类型的限制而不使用任何预定义的函数或头文件或宏? 如果有的请解决我的问题 我也想知道头文件。 是否有任何方法可以改变浮点数十进制后的数字?

多个进程或库副本之间的C字符串文字存储

当您运行特定程序或库的多个副本时,各种系统的行为是什么,字符串文字是在RAM中存储一次还是对于进程/库的每个副本存储一次? 如果它们存储在如下数组中,该怎么办? static const char *const foo[] = { “bar”, “baz”, “buz” }; static是否会改变内存存储的行为? 编辑:由于它可能是特定于平台的,因此Windows上的Microsoft编译器或Linux上的GCC(x86)上的行为是什么?

读取/写入bool值保证是C / C ++中的一条指令

我无法想象一个架构会在多个指令中设计对其最小数据类型的访问,但也许流水线有一些我不考虑的问题?

将8字节char数组转换为long

我们如何将8字节的char数组转换为long,因为<<不适用于long类型? #define word_size 8 long num = 0; char a[word_size] = “\x88\x99\xaa\x0bb\xcc\xdd\xee\xff”; for (i=0; i < word_size;i++) { a[(word_size-1) – i] |= (num << (8*(word_size – i – 1))) & 0xFF; } printf("%lx\n", num);