Tag: undefined 行为

PHP注意:未定义的偏移量:1与数组读取数据时

我得到这个PHP错误: PHP Notice: Undefined offset: 1 这里是引发它的PHP代码: $file_handle = fopen($path."/Summary/data.txt","r"); //open text file $data = array(); // create new array map while (!feof($file_handle) ) { $line_of_text = fgets($file_handle); // read in each line $parts = array_map('trim', explode(':', $line_of_text, 2)); // separates line_of_text by ':' trim strings for extra space $data[$parts[0]] = $parts[1]; // map the […]

用C ++ 11,是不是写了f(x ++),g(x ++)?

我正在阅读这个问题: 未定义的行为和顺序点 特别是C ++ 11的答案 ,并且我理解评估“sorting”的想法。 但是 – 当我写的时候是否有足够的顺序: f(x++), g(x++); ? 也就是说,我保证f()得到x的原始值, g()得到一个一次增加的x ? nitpickers注意事项: 假设operator++()已经定义了行为(即使我们已经覆盖它), f()和g() ,没有任何exception会被抛出,等等 – 这个问题不是这个问题。 假设operator,()没有被重载。

在'gcc -O2'上优化了函数无限循环

上下文 我的一个朋友被问到了下面的难题: void fn(void) { /* write something after this comment so that the program output is 10 */ /* write something before this comment */ } int main() { int i = 5; fn(); printf("%d\n", i); return 0; } 我知道可以有多种解决scheme,一些涉及macros观,一些假设一些关于实施和违反C. 我感兴趣的一个特别的解决scheme是对堆栈做一些假设,然后编写下面的代码:(我明白这是未定义的行为,但在许多实现上可能按预期工作) void fn(void) { /* write something after this comment so that the program […]

在rails中未定义的方法`devise_for'

在我安装devise并创build一个用户模型之后。 我rake db:migrate ,然后我rake routes 。 然后我得到一个错误“未定义的方法devise_for为#”。 什么可能导致这个错误?

在循环中的什么地方整数溢出成为未定义的行为?

这是一个例子来说明我的问题,涉及一些更复杂的代码,我不能在这里发表。 #include <stdio.h> int main() { int a = 0; for (int i = 0; i < 3; i++) { printf("Hello\n"); a = a + 1000000000; } } 这个程序在我的平台上包含未定义的行为,因为第三个循环会溢出。 这是否使整个程序有未定义的行为,或者只有溢出实际发生后 ? 编译器是否可能解决了a 会溢出的问题,所以它可以声明整个循环是未定义的,即使它们都发生在溢出之前,也不打算运行printfs。 (标签C和C ++虽然不同,因为如果两种语言不同,我会对这两种语言的答案感兴趣)。

JSLint:在定义之前使用

嗨,我有3个JavaScript文件。 的jquery.js utility.js file1.js 在file1.js中我有 jQuery.noConflict() jQuery(document).ready(function($) { // …. }); 我得到一个错误“jQuery”被使用之前,它被定义。 在定义之前使用“文档”。 我如何安全地摆脱这个警告。 如果我做 var document = document || {}; 然后在我的utility.js,如果它使用,它将是空的IE浏览器,并确定在Firefox。 什么是最好的解决scheme?

我如何从8位整数获得大于8位的值?

我追踪了这个小gem背后的一个非常讨厌的虫子。 我知道,根据C ++规范,有符号溢出是未定义的行为,但只有当值扩展到位宽sizeof(int)时发生溢出。 据我了解,只要sizeof(char) < sizeof(int) ,增加一个char不应该是未定义的行为。 但是这并不能解释c如何获得不可能的价值。 作为一个8位整数, c如何保持大于其位宽的值? 码 // Compiled with gcc-4.7.2 #include <cstdio> #include <stdint.h> #include <climits> int main() { int8_t c = 0; printf("SCHAR_MIN: %i\n", SCHAR_MIN); printf("SCHAR_MAX: %i\n", SCHAR_MAX); for (int32_t i = 0; i <= 300; i++) printf("c: %i\n", c–); printf("c: %i\n", c); return 0; } 产量 SCHAR_MIN: -128 […]

JavaScript空检查

我遇到了以下代码: function (data) { if (data != null && data !== undefined) { // some code here } } 我对JavaScript有点新鲜,但是从我在这里读到的其他问题来看,我觉得这个代码没有什么意义。 特别是, 这个答案指出 如果在typeof以外的任何上下文中访问一个未定义的variables,将会出错。 更新:上面的(引用)答案可能会引起误解。 它应该说“一个未声明的variables” ,而不是“一个未定义的variables” 。 正如我发现的那样,在Ryan , maerics和nwellnhof的答案中 ,即使没有给函数提供任何参数,参数的variables总是被声明的。 这个事实也certificate了下面的列表中的第一项是错误的。 根据我的理解,可能会遇到以下情况: 该函数没有参数被调用,因此使得data成为一个未定义的variables,并且在data != null上产生错误。 该函数被特殊调用为null (或undefined )作为其参数,在这种情况下, data != null已经保护了内部代码,呈现&& data !== undefined无用。 该函数被调用了一个非空参数,在这种情况下,它将平分地传递data != null 和 data !== undefined 。 问:我的理解是否正确? 我已经在Firefox的控制台中尝试了以下内容: […]

检查JavaScript中是否存在对象

如何在JavaScript中validation对象的存在? 以下工作: if (!null) alert("GOT HERE"); 但是这个失败了: if (!maybeObject) alert("GOT HERE"); 错误: mayObject没有被定义。

未初始化的局部variables是最快的随机数生成器吗?

我知道未初始化的局部variables是未定义的行为( UB ),并且该值可能具有可能影响进一步操作的陷阱表示,但是有时候我只想使用随机数仅用于视觉表示,并且不会在其他部分中进一步使用它们程序,例如,在视觉效果中设置随机颜色的东西,例如: void updateEffect(){ for(int i=0;i<1000;i++){ int r; int g; int b; star[i].setColor(r%255,g%255,b%255); bool isVisible; star[i].setVisible(isVisible); } } 比它快吗? void updateEffect(){ for(int i=0;i<1000;i++){ star[i].setColor(rand()%255,rand()%255,rand()%255); star[i].setVisible(rand()%2==0?true:false); } } 也比其他随机数发生器更快?