undefined-behavior相关内容

是(--i ==我++)不确定的行为?

这个问题是涉及到我以前的问题。我得到的答案是的“这是一个未定义的行为。”的 请谁能解释: 什么是未定义的行为? 我的代码,我怎么能知道有一个未定义的行为? 示例代码: INT I = 5; 如果(--i ==我++) Console.WriteLine(“平等且i =”+ I); ,否则 Console.WriteLine(“不等于我=”+ I); // ..
发布时间:2016-09-07 12:58:36 C#/.NET

C运算符+ =顺序点?

这是定义的行为? * P + = * P--; 和,如果是,是什么相当于 {P [0] + = P [0]; --P; } 或 {P [-1] = P [0]; --P; } ? 我猜被定义与否取决于 + = 是否有一个隐含的顺序点,如果有,我的猜测是,第二块应正确的。 编辑:我想是因为主要的问题有哪些序列点,怎么办影响行为这不是建议的问题的副本。在我来说,我有一个序列的一点是什么明确的想 ..
发布时间:2016-08-25 09:49:54 C/C++

程序崩溃时,如果`(可变%2 == 0)`

我正在写认定的程序完美数的。 完美数的清单:看了这些的完美数的我碰到他们的名单出来。此刻的输出是: 28 //完美 496 //完美 8128 //完美 130816 //不完美 2096128 //不完美 33550336 //完美 我决定创建数组并把它与数字,这完全把数(不休息)。因此,我将能够验证,如果它是一个的完美的号码或不加入数组的所有元素。但是,应用程序崩溃,我不明白为什么:的 ..
发布时间:2016-08-24 13:00:02 C/C++

是空指针在Objective-C未定义行为?

在C和C ++中,空指针引用是未定义的行为。有关Objective-C的什么? 在换句话说,这是什么code保障办? *(*长)= 0; 背景:不知这个答案可能会引发未定义的行为可能造成类似的声明随机的东西被优化掉了,甚至怪异的事情。 当然,我并不赞同这样做。仍然,重要的是要知道的语言的规则。 解决方案 由于Objective-C的无非是基于C之上的面向对象层以上,纯C语句没有特殊的 ..
发布时间:2016-08-24 12:35:10 移动开发

C标准的严格间pretation允许上可能无效的指针操作

原始的问题 的(请参阅“编辑:更新方案”)的 此问题可能是在一个重复或另一种方式来围绕指针未定义行为问题的对象出去范围等,但我在这里找到此主题的所有问题大多是专门用例巨大集合。所以,我想旋转的问题倒过来,不问什么是禁止的,但究竟什么是允许的? 为了有一个可能的场景:你有一个功能,即需要一个指针 - 你不知道,如果它从(仍然)有效的对象来了。哪些操作是在所有情况下不可以未定义的行为?这可能有不 ..
发布时间:2016-08-23 12:10:44 C/C++

数组和指针的区别,以字符串

我是新来的 C 的,所以它可能是一个愚蠢的问题。我写了一块code像波纹管: 字符AR [] =“测试”;*(AR + 1)='R'; 这是工作的罚款。但每当我这样做:的char * p =“测试”;*(P + 1)=“R”; 这是给人的分段故障的。任何人都可以请为什么第二种情况是给段错误描述?但从记忆点的解释将是AP preciated。 解决方案 在第二种情况下 P 指向一个的 ..
发布时间:2016-08-23 12:02:06 C/C++

实施可以指定未定义行为

3.4.1 结果1实现定义的行为结果 不确定的行为选择是,每个文件的实施如何使 的实施可以指定,实现定义的行为是在情况不确定的行为,其中不确定的行为是一个可能的结果? 例如: 6.3.1.3符号和无符号整数结果 3否则,新的类型签名和值不能再次在它psented $ P $;的无论是 结果是实现定义的或实现定义的信号提高。 所以,只要有文件,可这个结果由实现不定,导致未 ..
发布时间:2016-08-23 10:37:51 C/C++

我什么时候可以用未签署声明INT脱身?

在C,有符号整数像-1理应应该用关键字来声明签署,就像这样: 符号int i = -1; 不过,我想这样的:符号int i = -2; unsigned int类型I = -2; INT I = -2; 和三种情况下打印出-2与的printf(“%d个”,我); 。为什么呢? 解决方案 由于您确认您使用的是打印:的printf(“%d个”,我); 这是的无符号情况下未定义行为。这 ..
发布时间:2016-08-23 10:36:18 C/C++

在一个平台,空重为presented为0,有一个编译器产生过意外code为NULL< = P

在C99,平等 == 似乎并不永远是不确定。它可以产生 1 意外,如果你将其应用到无效的地址(例如&放大器; X + 1 ==&安培; Y 可能是偶然真)。它不会产生不确定的行为。很多,但不是所有的,无效的地址是不确定的计算按标准/使用,使点==&放大器; X 与 P 悬空指针,或在&放大器; X + 2 ==&安培; Y ,无效的地址会导致不确定的行为,而不是 == 。 在另一方面,&GT = ..
发布时间:2016-08-23 10:21:32 C/C++

如何将里面(A + = 3,5,一个)的操作数将要处理或为了打印的&QUOT值caculated;一个与QUOT ;?

在code段是: INT的main() { 诠释一个= 1,B = 2,C = 3; 输出(“%d个”,一+ =(A + = 3,5,一)); } 虽然在终端作为输出显示8。但我没有得到它背后的概念。 解决方案 这是效果的逗号操作符是如何工作的,最后一个元素是用作语句的价值之一。所以基本上你得到的就是把以下内容: A + =(A + = 3,5,) 本评估 A ..
发布时间:2016-08-23 10:19:54 C/C++

在C / C这个未定义行为++

INT美孚(INT C){ 返回℃; }诠释主要(无效){ 诠释1 = 5,C; C =美孚( - A)+ A; } 它会在调用C / C未定义行为++?我觉得没有也不会。 看完所有的答案后,我无法弄清楚它是否是未定义的行为或不确定的行为。 解决方案 是的,它是不确定的行为 - A 和美孚( - A)可以以任何顺序进行评价。 有关进一步的参考,例如见序列 ..
发布时间:2016-08-23 10:18:20 C/C++开发

可以无符号整数递增导致未定义定义的行为?

在这里阅读64位 32位无符号乘法导致未定义的行为?问题在计算器上后,我开始思考无论是在小型无符号类型典型的算术运算可根据C99标准导致不确定的行为。 例如,采取以下code: 的#include<&limits.h中GT;...unsigned char型X = UCHAR_MAX; unsigned char型Y = X + 1; 的 X 变量初始化为 unsigned char ..
发布时间:2016-08-23 10:06:53 C/C++

在函数调用的参数计算顺序?

我学习关于用C未定义行为,我来到指出声明 有函数参数评估没有特定的顺序 但后来怎么样 _cdecl 和 _stdcall 标准调用约定一样,其定义说(在书中)该参数是从右到左进行评估。 现在我很困惑与这两个定义之一的,依照UB,各国比其他也就是按照调用约定的定义不同。请证明两个。 解决方案 ..
发布时间:2016-08-23 10:05:38 C/C++

阈值的绝对值

我有以下功能: 字符F1(int类型的,无符号B){返回ABS(一)LT; = B; } 有关执行速度,我希望把它改写如下:字符F2(int类型的,无符号B){返回(无符号)(A + B)< = 2 * B; } //多余的投 或者用此签名,可能有细微的影响甚至对于非负 B :字符F3(INT A,INT B){返回(无符号)(A + B)< = 2 * B; } 这两种 ..

难道没有一个适当的原型调用的printf未定义行为?

这是否无辜的望着调用程序未定义行为: INT主要(无效){ 的printf(“%d个\\ N”,1); 返回0; } 解决方案 是调用的printf()没有一个适当的原型(从标准头 <文件stdio.h方式> 或适当书面声明)调用未定义的行为 由于记录在C11附录J(资料只) J2未定义行为 有关的函数的调用,而不在范围上一个 ..

如果未初始化变量的值不应该影响一个前pression的价值,它仍然UB?

这是一个后续从讨论,我认为值得它自己的问题。 基本上,这是不确定的结果? INT X; INT Y = 1 || X; 在这里有两个“常识性”参数: 从数学上讲,无论是什么的值x ,是应 1 。 由于短路, X 从未反正评估。 但反驳的是,我们有一个前pression涉及未初始化变量,因此,所有的赌注都关闭(理论上)。 更一般地,如果未初始化变量的值不可能影响一个前pression的 ..
发布时间:2016-08-22 16:48:54 C/C++