language-lawyer相关内容
我不是在C标准这么精通,所以请多多包涵。 我想知道,如果它是保证,由标准,即的memcpy(0,0,0)是安全的。 我能找到的唯一限制是,如果内存区域重叠,则行为是不确定... 但我们认为内存区域重叠在这里? 解决方案 我有C标准(ISO / IEC 9899:1999)的草稿版本,它有一些有趣的东西,说这一呼吁。对于初学者来说,它提到(教派; 7.21.1 / 2)关于的memcp
..
我不知道我的非常的理解到未定义行为可能危及程序的程度。 让我们说我有这个code: 的#include<&stdio.h中GT;诠释的main() { INT V = 0; scanf函数(“%d个”,&安培; 5); 如果(ⅴ!= 0) { INT * P; * P = V; //哎呀 } 返回伏; }
..
我想我们大家都同意,这被认为是地道下用在一维的方式间接引用(可能偏移)指向它的第一个元素,例如访问一个真正的多维数组: 无效clearBottomRightElement为(int *阵列,诠释男,INT N) { 数组[M * N-1] = 0; // pretend数组是一维 } INT MTX [5] [3]; ... clearBottomRightElement(安培; M
..
跨越有趣的采访问题就来了 测试1: 的printf(“测试%S \\ n”,NULL); 的printf(“测试%S \\ n”,NULL);打印: 测试(空) 测试(空)测试2: 的printf(“%S \\ n”,NULL); 的printf(“%S \\ n”,NULL); 版画 分段错误(核心转储) 虽然这样可能在某些系统上运行良好,ATLEAST矿是扔分割故障。 什么是这种行为的最
..
编辑:这个问题不好旨在为有关的不确定的行为(德)值得讨论的论坛,但是这是那种什么成了。在任何情况下,这个线程关于一个假设C编译器使用没有未定义的行为可能是额外的利息那些谁认为这是一个重要的话题。 的“未定义行为”的经典例子杜撰的,当然,“鼻魔”—物理不可能的,无论什么样的C和C ++标准允许。 由于C和C ++社区往往把这样一个注重未定义行为未predictability和观念,编
..
如何c重新present负整数? 它是由二的补码重新presentation或通过使用MSB(最高显著位) 1 以十六进制为 FFFFFFFF 。 所以,请澄清这对我来说。 解决方案 ISO C(C99),截面 6.2.6.2/2 ,指出实现必须选一个三种不同的再presentations积分的数据类型,2的补一补数或符号/幅度(尽管它是令人难以置信的可能是两个互补的实现远远大于其他
..
几天回来有一个讨论这里是否除权pression 我= + I + 1 调用UB (未定义的行为)或没有。 最后得出结论有人提出,它调用UB为'i'是改变不是两个序列点之间再一次的值。 我参与了讨论与约翰内斯绍布在同一个线程。据他介绍 I =(I,I + +,我)+1 ------(1)/ *调用UB和* / 我说(1),因为previous SUBEX pressio
..
..
我已经看到了,现在断言几次,以下code不被C ++标准允许的: int数组[5]; 为int * array_begin =安培;数组[0]; 为int * array_end =安培;阵列[5]; 是&放大器;?阵列[5] 法律C ++ code在这方面 我想与该标准如果可能的参考答案。 这也将是有趣的知道,如果它符合C标准。而如果它不是标准的C ++,为什么决定做出从阵列+ 5 或&
..
我在的boost :: hold_any 文件看,我发现了一些东西混淆了我。如果我认为我的信息通过回答我的问题有:
..
是标准的分配器回吐构造诺 / packaged_task 应该使用分配器只是状态对象本身,还是这应该保证的所有的(内部)相关的对象? [futures.promise]:“......分配内存共享状态”结果 [futures.task.members]:“......需要分配存储内部数据结构存储” 在特定的,是下面的错误或功能? * MSVC 2013.4,提升1.57,霍华德Hi
..
我试图创建一个类从派生的boost ::多precision :: mpz_int ,并把它继承基类的构造函数: 的#include<升压/多precision / gmp.hpp>使用空间boost ::多precision;结构整型: mpz_int { 使用mpz_int :: mpz_int; }; G ++ 4.9.0给我以下错误: 的main.cpp:8:
..
请问C ++标准定义: 布尔参数的“小于”操作者的存在,如果是这样, 4个参数排列的结果? 在换言之,是从以下的操作由规范定义的结果 假LT;假 假<真正 真<假 真<真正 在我的设置(Centos的7,GCC 4.8.2)中,code以下吐出来,我期望是什么(因为重新presenting假为0,真正的为1的C'S史):假LT;假=假 假<真正=真 真&
..
我瞪大眼睛资讯科技及电讯;试图找到类似的问题上也是如此,但没有发现任何有用的东西。所以,在这里发布我的问题。 考虑此程序: 的#include<&iostream的GT; 无效美孚(常量标准::字符串&安培;){} 诠释的main() { 富(假); } 【警告】转换'假',以指针类型为'的std :: basic_string的&LT参数1; _CharT,_Traits,_A
..
在C ++中,有没有做任何区别&放大器;&安培; (逻辑)和&安培; (按位)布尔(S)之间? 布尔VAL1 = foo的(); 布尔将val2 =巴();布尔案例1 = VAL1&安培; val2的; 布尔案例2 = VAL1和放大器;&安培; val2的; 是案例1 和案例2 相同或者不究竟是如何做的,他们各不相同,为什么有人选择一个比其他?是和的bool的按位便携式? 解决方案 的
..
这是在我的收藏“中的C和C ++我不明白指针”的新问题。 如果我混用两个指针相等的值(指向相同的内存地址)的位,碰巧有完全重新presentation相同的位,当一个人提领,一个一个过去到底有什么没有标准的发言权应该发生? 的#include<&stdio.h中GT; #包括LT&;&string.h中GT; #包括LT&;&ASSERT.H GT;//要求:一== b //返回a和b的
..
下code: 结构美孚 { 美孚(INT){} //没有默认构造函数 };诠释的main() { 美孚* PFOO =新的Foo [2] {1,2};在G ++ // OK,失败在铛++! 删除[] PFOO; } 编译gcc的,但是的失败的铛。是code以上语法正确的? 解决方案 我要把@ T.C。到答案发表评论,所以每个人都看到发生了什么事情,而不必通过所有
..
当我整理了以下code。与的gcc -Wall -pedantic -ansi -std = C89 ,它成功编译没有在指针赋值给了一个错误。请注意,我从 INT(*)[4] 到 INT(*)[] 。转换 INT ARR [4]; INT(* p_arr)[] =&放大器;编曲; 假设有一些原因让这(?不兼容)分配的,当我尝试使用它,编译器为不完全型误差错误:'sizeof的“不完全类型'
..
语言律师的角度来看,这些条款中禁止低于code标准: INT ARR [](10,42); 这将产生10个元素的数组,每个initalized 42。 解决方案 语言律师明智的,8.5 / 17: - 如果初始值是(非括号的)支撑,初始化列表,对象或引用列表初始化(8.5.4) - 如果目标类型是引用类型,见8.5.3 - 如果目标类型是字
..
我需要权威渠道的语言律师。 看看下面的测试程序,它在GCC完全编译: 的#include<&stdio.h中GT; 无效美孚(INT *一){ 一个[98] = 0xFEADFACE; }无效杆(INT B〔]){ *(B + 498)= 0xFEADFACE; }INT主(INT ARGC,字符** argv的){诠释[100],B [500],* a_p;*(A +
..