首页 文章
  • 5 votes
     answers
     views

    任何将'char'视为'unsigned'的编译器?

    除非用户在文件或项目设置中明确提到,否则是否有任何C编译器将默认类型的char作为unsigned? / Kanu_
  • 3 votes
     answers
     views

    如何避免gcc警告简单的“char”:“unsigned char”或“signed char”转换?

    我的默认字符类型是gcc选项(-funsigned-char gcc)中设置的“unsigned char” . 所以当我在代码中需要“unsigned char”时,我可以使用“char” . 但我收到警告(char *)和(unsigned char *或signed char *)之间的转换: "error: pointer targets in passing argument ...
  • 5 votes
     answers
     views

    带有模数运算符的无符号溢出

    我在编写的一些c代码中遇到了一个错误,虽然它相对容易修复,但我希望能够更好地理解它背后的问题 . 基本上发生的事情是我有两个无符号整数(实际上是uint32_t),当应用模数运算时,产生一个负数的无符号等价物,一个已被包裹的数字,因此是“大” . 这是一个示例程序来演示: #include <stdio.h> #include <stdint.h> int main(in...
  • 0 votes
     answers
     views

    C - 有符号和无符号整数

    我正在深入研究C,因为我需要将ctypes库导入python以允许键盘控制 . 我正在尝试了解以下代码的工作原理: import ctypes import time SendInput = ctypes.windll.user32.SendInput # C struct redefinitions PUL = ctypes.POINTER(ctypes.c_ulong) class Ke...
  • 1 votes
     answers
     views

    无符号和有符号的int和printf

    据我所知,我为signed int赋予了一个比它能处理的值更大的值 . 另外,我应该使用 %d 进行签名,将 %u 用于unsigned . 同样,我不应该将 -ve 值赋给unsigned . 但如果我进行这样的分配并使用如下的printf,我会得到如下结果 . 我的理解是,在每种情况下,转换为其两个恭维二进制表示的数量对于 -1 或 4294967295 是相同的 . 这就是为什么 %u 签名...
  • 5 votes
     answers
     views

    从无符号整数中减去有符号整数[重复]

    这个问题在这里已有答案: How do promotion rules work when the signedness on either side of a binary operator differ? [duplicate] 3个答案 unsigned int value = 1860; int data = 1300; if( (data - value) > 0) { ...
  • 2 votes
     answers
     views

    代表C shift在Java中留下了signed char和unsigned char

    我试图将一些C代码移植到Java中,并且一直在努力解释转换的顺序,运算符优先级,并确保结果符合我的预期 . 我已经阅读了很多帖子,并且认为我已经弄明白了但是我想确定我已经正确地表达了它 . original C code我想尝试移植是这样的: UInt32 _strtoul(char *str, int size, int base) { UInt32 total = 0; int...
  • 29 votes
     answers
     views

    'Correct'无符号整数比较[关闭]

    所以,我们都知道C / C签名/未签名的比较规则,其中 -1 > 2u == true ,我有一种情况,我希望有效地实现'correct'比较 . 我的问题是,考虑到人们熟悉的众多架构,这会更有效率 . 显然英特尔和ARM的权重更高 . 鉴于: int x; unsigned int y; if (x < y) {} 推广是否更好: x < y => (int64)x...
  • 9 votes
     answers
     views

    无符号vs有符号范围保证

    我花了一些时间仔细阅读标准参考文献,但我无法找到以下答案: 在技术上是否由C / C标准保证,给定有符号整数类型S及其无符号对应物U,每个可能S的绝对值总是小于或等于U的最大值? 我得到的最接近的是C99标准的第6.2.6.2节(C的措辞对我来说更加神秘,我认为它们相当于此): 对于有符号整数类型,对象表示的位应分为三组:值位,填充位和符号位 . (...)作为值位的每个位应具有与相应无符...
  • 5 votes
     answers
     views

    为什么C编译器不能以直观的方式进行签名/无符号比较[关闭]

    “直觉”我指的是 int a = -1; unsigned int b = 3; 表达式 (a < b) 应该评估为1 . Stackoverflow上有很多问题已经问过为什么在这个或那个特殊情况下C编译器会抱怨签名/无符号比较 . 答案归结为整数转换规则等 . 然而,在比较有符号整数和无符号整数时,为什么编译器必须如此格外愚蠢似乎并不存在 rationale . 使用上面的声明,为什么...
  • 134 votes
     answers
     views

    在Java中通过引用传递字符串?

    我习惯在 C 做以下事情: void main() { String zText = ""; fillString(zText); printf(zText); } void fillString(String zText) { zText += "foo"; } 输出是: foo 但是,在Java中,这似乎不起作用 ....
  • 1 votes
     answers
     views

    Linux夏令时通知

    当我尝试夏令时时,我试图找到一种方法从系统(Linux)接收通知,但我似乎无法找到类似的东西 . 考虑一个程序坐在 pselect() 上等待多个计时器 fd ,所有计时器都有24小时的间隔,但开始时间不同,由用户定义; “ 07:00 ON , 07:25 OFF ”(例如,如果它是咖啡机) . 因为用户在本地时间提供这些时间并且Linux在UTC上运行,所以每次夏令时都需要重新调整时区调整的计...
  • 2 votes
     answers
     views

    没有bind()的UDP客户端不接收数据

    我从binarytides参考了UDP客户端程序,我能够将UDP数据包发送到UDP服务器,这是我的嵌入式设备,该设备回显UDP消息 . 在这个PC-UDP客户端代码中,它应该得到回显的消息,但我没有得到任何回声 . 所以我在我的PC上运行一个UDP服务器,它监听传入的数据并打印它,我能够看到来自我的嵌入式设备的回显消息 . 当我在代码中的while(1)循环之前添加这些行时,现在我能够看到Echo...
  • 44 votes
     answers
     views

    具有常数整数除数的高效浮点除法

    最近question,是否允许编译器用浮点乘法替换浮点除法,这激励我提出这个问题 . 在严格的要求下,代码转换后的结果应与实际除法运算在位上相同,但是对于二进制IEEE-754算术来说,这对于2的幂的除数是可能的 . 只要除数的倒数可以表示,乘以除数的倒数就可以得到与除数相同的结果 . 例如,乘以 0.5 可以用 2.0 替换除法 . 然后,人们想知道其他除数这样的替换是如何工作的,假设我们允许任...
  • 395 votes
     answers
     views

    哪个更好的选项用于将整数除以2?

    以下哪种技术是将整数除以2的最佳选择,为什么? 技术1: x = x >> 1; 技术2: x = x / 2; 这里 x 是一个整数 .
  • -1 votes
     answers
     views

    将数字除以5而不使用除法运算符[duplicate]

    可能重复:使用位智能运算符实现除法将数字除以3而不使用*,/, - ,%运算符 我在接受采访时遇到了这个问题 . 我想知道是否有任何可能的方法将数字除以5而不使用除法运算符,并且如果使用按位运算符存在任何可能的解决方案 . 我用重复减法计算出一个直到零逼近 . 号码可以签名和未签名 . 如果没有使用,请建议任何出路, - ,/,*和% .
  • 341 votes
     answers
     views

    float和double有什么区别?

    我已经读过双精度和单精度之间的区别 . 但是,在大多数情况下, float 和 double 似乎是可以互换的,即使用一个或另一个似乎不会影响结果 . 这是真的吗?浮动和双打什么时候可以互换?它们之间有什么区别?
  • 0 votes
     answers
     views

    Unix中的信号处理

    我正在学习Unix中的信号处理,并且很难理解 sigprocmask() 中的 SIG_SETMASK 和 o_set 以及它们做了什么? 据我所知 set 包含要阻止或解除阻塞的信号列表, SIG_BLOCK 阻止列表中的信号, SIG_UNBLOCK 解锁它们 . sigprocmask(SIG_SETMASK,&set,& o_set);
  • 411 votes
     answers
     views

    为什么我的讲师写的所有C文件都以#开头?

    为什么我的讲师写的所有C文件都以#开头? 我正在阅读一些C课程笔记,每个C程序源文件都以程序第一行的单个 # 开头 . 然后有空格,然后跟着 main 函数后跟其他东西 . # 的原因是什么? (现在这是不合时宜的,我不能真的问这个小伙子 . ) 这是一个例子(在收盘结束时有一个额外的行 } ) # #include <stdio.h> int main() { printf(...
  • 2 votes
     answers
     views

    C:字节复制无符号字符值

    void callback(const unsigned char* data, int len) { unsigned char copydatahere; } data是指向const的指针,在外部库中分配 . len是一个数据大小,猜测它是sizeof(unsigned char)* N. 我如何将 copydatahere 分配给 len 的大小并复制 data 后面的整个内存,包括...
  • 0 votes
     answers
     views

    将指针作为参数传递时的不正常结果

    我已经实现了一个hashmap . struct hashmap_elmnts {char * key;int in_use;无效*数据; //包含下面定义的struct ussd的malloc的地址}; struct hashmap_map { int table_sizel; int size; ...
  • 4 votes
     answers
     views

    为什么编译器看到char *和printf 's conversion specifier “s” when the char * is typedef' d之间的不匹配并通过结构访问?

    为什么编译器会在下面的printf中抱怨参数类型“char”和转换说明符“s”不匹配? #include <stdio.h> #include <stdlib.h> typedef char * STR; // causes problems in printf below int main(void) { struct MyStruct { ...
  • 185 votes
     answers
     views

    父母退出后如何让孩子过程死亡?

    假设我有一个只产生一个子进程的进程 . 现在,当父进程因任何原因(正常或异常,通过kill,^ C,断言失败或其他任何原因)退出时,我希望子进程死掉 . 怎么做到这一点? stackoverflow上的一些类似问题: (早先问过)How can I cause a child process to exit when the parent does? (稍后问)Are child pro...
  • 0 votes
     answers
     views

    RLE算法有缺陷吗?

    关于删除字符串中的重复字符,我正在查看最近的Code Golf . 我仔细考虑过它,并认为RLE算法会解决它,事实上,我确实相信会解决重复问题,我在C中写了一个实现,看看我能走多远 char *rle(const char *src){ char *p=(char *)src; char *q=(char *)src+1; char *rle_enc=NULL, *tmp_...
  • 0 votes
     answers
     views

    fork多个子进程来运行其他程序

    我想从父程序(称为守护进程)开始使用args测试程序的5个子进程(所有5个并行,不等待完成) . 我有以下代码: #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc,char* argv[]){ //missing irrelevant part w...
  • 1 votes
     answers
     views

    C - 父进程无限期地等待运行authopen的分叉子进程

    我试图让我的父进程等待运行 authopen 的子fork,以编写具有提升权限的文件 . 父级中的 wait/waitpid 无限期挂起以使子进程终止 . 我相信这是因为 authopen 在程序退出之前不会释放文件 . authopen 写入的文件在程序的生命周期内被锁定,因此无法读取该文件,无法使用其他 authopen 进程写入该文件,并打开该文件 . 在程序退出之前,vim不显示文件的内容...
  • -1 votes
     answers
     views

    C - dup2()没有执行

    这是我的第一个问题,所以如果我忽略任何重要的事情我会道歉 . 所以我一直致力于通过分叉处理管道的任务 . 我的代码非常混乱,充斥着printf语句,所以我看到发生了什么 . 我在网上浏览了一下,我想我知道如何处理管道,但我遇到的问题是我的代码跳过除了inFD和outFD之外的任何文件描述符上的dup2() . 这是我的功能代码 . 另外,根据我的理解,我的老师制作了一个名为CHK的宏来检查错误 ....
  • 4 votes
     answers
     views

    C中的套接字编程

    好吧,所以当我使用C进行网络编程时,我几乎没有绿色 . 我正在使用here的示例文件 基本上我只是在侦听给定端口上的传入UDP数据包,然后我想以相同的方式发送一些数据 . 以下是相关部分 . 此时,套接字已设置并绑定到选择的端口并等待传入的数据包: printf("GSProxy: waiting to recvfrom...\n"); addr_len = (socklen...
  • 107 votes
     answers
     views

    并发调用同一套接字上的send / recv是否有效?

    我们可以从一个线程调用send并在同一个套接字上从另一个调用recv吗? 我们可以从同一个套接字上的不同线程并行调用多个发送吗? 我知道一个好的设计应该避免这种情况,但我不清楚这些系统API将如何表现 . 我也找不到相同的好文档 . 方向上的任何指针都会有所帮助 .
  • 2 votes
     answers
     views

    多线程以从多个UDP客户端接收数据

    我想从不同的客户端接收数据(客户端数量是固定的,比如10),并且每个客户端在5个不同的预定义端口上发送数据,这些端口不会改变 . (例如,客户端1端口5000,5001,5002等) . 所有客户端都可以同时发送数据 . (以上都是固定的) 在TCP中说,我可以为我们接受的每个连接创建多个线程,如下所示 . UDP is connectionless,So how can we create...

热门问题