Tag: 转换

来自带有预处理程序指令的c代码的AST

如何从gcc C代码构建AST(抽象语法树)以进行一些转换,如下所示,然后再将代码重新生成(生成)到C语法? if(condition_1){ //lines of code 1 } #ifdef expression_1 else if(condition_2){ //lines of code 2 } #endif 成 bool test = condition_1; if(teste){ //lines of code 1 } #ifdef expression_1 if(!(test) && condition_2){ //lines of code 2 } #endif

如何创建一个圆柱形骨骼存储为2点(头部,尾部)的矢量?

这就是我想要的,有人在网上写过,但我以前从未使用过四元数,所以不知道如何实现它。 我相信这只是一个简单的等式,但如何在c / c ++代码中实现? Here: “You could use a bone stored as a vector made of 2 points (Head,Tail). Since you are rotating it, Head will be the fulcrum and Tail will rotate around an arbitrary axis. That’s a quaternion’s job.” 我有一个圆柱形网格的所有顶点的绝对位置,现在如果我在顶端和底端创建两个矢量/点V1(x,y,z)和V2(x,y,z),那么我将能够变换网格顶点只需转换V2(顶端)点,但V1(底端)不应改变其位置。 我可以在带有glutSolidCylinder的OpenGL中做,它非常简单,但是我想用网格顶点实现,所以每个顶点都应该在顶部或底部矢量/点的任何变化后更新。 谢谢。

使用有效的C代码将struct sockaddr *转换为struct sockaddr_in6 *的正确方法是什么?

这是一个简单的程序,它显示了在编写套接字程序时我们通常如何将struct sockaddr *类型struct sockaddr * struct sockaddr_in *或struct sockaddr_in6 * 。 #include #include #include #include #include #include int main() { struct addrinfo *ai; printf(“sizeof (struct sockaddr): %zu\n”, sizeof (struct sockaddr)); printf(“sizeof (struct sockaddr_in): %zu\n”, sizeof (struct sockaddr_in)); printf(“sizeof (struct sockaddr_in6): %zu\n”, sizeof (struct sockaddr_in6)); if (getaddrinfo(“localhost”, “http”, NULL, &ai) != 0) { printf(“error\n”); return EXIT_FAILURE; […]

转换为int时浮点数为何在C下面舍入?

在一次采访中,有人问我对以下代码有何看法: #include int main() { float f = 10.7; int a; a = f; printf (“%d\n”, a); } 我回答了: 当您将float更改为没有float转换的int ,编译器将发出警告。 由于您没有使用强制转换,因此int将具有垃圾值。 然后,他们允许我在在线编译器上运行程序。 我不堪重负。 我的假设都是错误的。 编译器没有发出任何警告,并且int的值为10.即使我改变了, float值为10.9或10.3,答案也是一样的。 即使投了一个cast并没有改变结果。 有人能告诉我为什么会发生这种情况,结果会在什么情况下有所不同。 注意:在编译时,面试官告诉我不添加gcc标志。 编辑:现在我已经明白,浮动不会四舍五入,答案将是10.但有人可以解释我为什么这样设计? 转换为int时为什么浮动,在下面四舍五入? 有具体原因吗?

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

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

在C中运行时获取变量的类型

我可以在C中获取程序变量’在运行时在特定内存段中存在的类型。 C无法识别错误: int k=5; float s= 3.4; k=s; printf(“%d”, k); 我试图在运行时更改变量的类型。

将项目转换为C中链接列表的末尾

编辑*(晚上8:14) – 抱歉,我更正了我的代码并将其作为一种方法,因此可以更容易理解。 在添加到链表的末尾时,我不确定如何正确地转换结构。 编译此代码会在最后一行给出一个强制警告。 这可能是我的其余代码无法正常运行的原因。 例如: #include typedef struct { int data; struct node *next; } node; node *HEAD = NULL; node *addNode(int num) { if (HEAD == NULL) { HEAD = (node *)malloc(sizeof(node)); HEAD->next = NULL; HEAD->data = num; } else { node *newNode; newNode = (node *)malloc(sizeof(node)); newNode->data = num; newNode->next = […]

如何从s64值中删除前3个字节和最后一个字节?

代码: s64 end_time; struct timespec ts; getrawmonotonic(&ts); end_time = timespec_to_ns(&ts); 如何从end_time删除前三个字节并从中end_time最后一个字节? 我想将它存储在uint32中。 谁能告诉我怎么做? uint32 latency; fscanf(fp, “%lu\n”, latency); //fp is reading the end_time and storing in latency. latency = (uint32) (latency >> 8) & 0xFFFFFFFF;

为什么编译器会发出“警告:赋值在没有强制转换的情况下从指针生成整数”?

我不明白为什么我在尝试编译时会遇到错误。 我说错了 fractions.c:在函数“main”中: fractions.c:35:24:警告:赋值从指针生成整数而没有强制转换[默认情况下启用] fractions.c:38:24:警告:赋值从指针生成整数而没有强制转换[默认启用] fractions.c: 41:24:警告:赋值从指针生成整数而没有强制转换[默认情况下启用] fractions.c:44:24:警告:赋值从指针生成整数而没有强制转换[默认情况下启用] fractions.c:48:11:警告:未使用的变量“fArray”[-Wunused-variable]“ #include #include typedef struct{ int numerator; int denomonator; char operator; int num2; int den2; } fraction; void printFraction(fraction f); int main(){ fraction myFraction; char input; printf(“Enter the numerator of fraction 1: “); scanf(“%i”, &myFraction.numerator); printf(“Enter the demoninator of fraction 1: “); scanf(“%i”, &myFraction.denomonator); printf(“Enter the numerator […]

使用位操作将整数转换为浮点数在C中的某些整数上打破

在类赋值上工作时,我试图仅使用位操作将整数强制转换为浮点数(限于任何整数/无符号运算,包括||,&&。也if,while)。 我的代码适用于大多数值,但有些值不能生成我正在寻找的结果。 例如,如果x是0x807fffff,我得到0xceff0001,但正确的结果应该是0xceff0000。 我想我的尾数和四舍五入都缺少一些东西,但不能把它固定下来。 我已经查看了SO上的其他一些线程以及转换为int-to-float和如何手动操作 unsigned dl22(int x) { int tmin = 0x1 << 31; int tmax = ~tmin; unsigned signBit = 0; unsigned exponent; unsigned mantissa; int bias = 127; if (x == 0) { return 0; } if (x == tmin) { return 0xcf << 24; } if (x < 0) { signBit […]