登录 立即注册

找到358个回复 (用户: 无名啊)

无名啊 25楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

@老虎会游泳,万一哪天,编译器改成,看到不兼容类型的指针转换,后续都不管对这个对象的任何操作了,咋办?

反正也符合标准。。

无名啊 24楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

@老虎会游泳( long * ) &y 这个是左值吗?解引用后,类型是 long,不是字符类型,与 float 也不是兼容类型,所以应该是未定义行为

我 C/C++ 写得不多,现在看到那篇文章,就更怕编译器没能正确实现 UB 了。。

无名啊 22楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

@老虎会游泳,我没能力修改 gcc,所以就认了。要么加 -fno-strict-aliasing,要么用 memcpy,来防止结果出错。

但这还会影响到性能低下问题(特别是修改了 char * 后,编译器会认为一大堆对象有可能被修改了,所以缓存失效,需要重新读取),所以我要搞懂 restrict

无名啊 20楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

@老虎会游泳,cppreference 说,这是 UB:

image.png(64.78 KB)

无名啊 19楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

@老虎会游泳,你看下知乎上的 一个回答

无名啊 17楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

@老虎会游泳,按照标准,可能根本不会发生解引用指向float值的long指针,因为可能已经被优化掉了。。也就没有你后面说的浮点定义如何如何……

无名啊 15楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

@老虎会游泳,如果按 cppreference 所说,应该是未定义行为

转换指针类型没问题,只要不访问就行。(但不访问,转了也没用。可认为不能转)

比如:

float a = 1.0;
long * b = (long *)&a;

*b = 1;
return a;

按照标准,编译器可认为,a 未被修改(因为 *b 不是 a 的兼容类型,所以修改 *b 不应该污染 a),所以优化掉 b,直接返回 1.0。。。

无名啊 13楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

@老虎会游泳,你看下 cppreference - 指针 - 注解 说的:

尽管任何指向对象的指针能被转型成指向其他类型对象的指针,解引用指向类型异于对象声明类型的指针几乎总是未定义行为。细节见严格别名使用。

无名啊 11楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

@老虎会游泳,我比较怕的是未定义行为导致的结果错误,所以想弄清楚别名规则。

看到知乎那篇文章中的第三个例子,我又觉得 restrict 有助于减少性能损耗(修改 char * 导致编译器认为 this 可能被修改,进而没法重复利用缓存好的 this),所以顺便想弄清楚 restrict

无名啊 8楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-27//)

@老虎会游泳,回复好多啊,我刚看到第一条:

此外,Q_rsqrt()函数中没有未定义行为

未定义行为是:* ( long * ) &y

cppreference - 严格别名 说:

某左值表达式,是某个对象的[cvr修饰][有/无符号]兼容类型/含有第一项的结构体或联合体/字符类型,才能赋值访问,否则为未定义行为。

long 不是 float 的兼容类型,也不是字符类型,所以是未定义行为。

严重时,会产生结果错误/性能低下等后果(见 知乎 - 严格别名(Strict Aliasing)规则是什么? - 严格别名(strict aliasing)为什么讨厌 中的三个例子)

无名啊 1楼回复 无名啊如何理解 C/C++ 中的 指针别名(pointer alias)、restrict、const 的关系呢? (2023-01-26//)

先 @ 万能的 @老虎会游泳

无名啊 1楼回复 张小强有什么方式可以将web页面封装成apk (2023-01-24//)

@张小强,一个木函、Fusion App 啥的可以么?(没咋用过,但记得有这个功能)

无名啊 4楼回复 无名啊纯 SQL 还有啥策略,能更好地模糊识别 长地址 为 行政区划代码 呢?(有 5 级地区库) (2023-01-24//)

@老虎会游泳,常规语言有啥算法吗?啥啥啥相似度?或者……?

人工智能大概怎么个过程呢?

无名啊 3楼回复 无名啊纯 SQL 还有啥策略,能更好地模糊识别 长地址 为 行政区划代码 呢?(有 5 级地区库) (2023-01-24//)

@加勒比海带,不算啥大佬吧,只是 SQL 写起来繁杂,看起来复杂而已。实际思路很简单

无名啊 1楼回复 tasy5kg[备忘]钛备份对 Android 13 存在兼容性问题 (2023-01-21//)

@tasy5kg,好久没用过钛备份这类 app 了,感觉现在都懒得折腾了

直接用系统的云备份,本地资料有需要的就压缩下文件夹。。

无名啊 1楼回复 老虎会游泳犯了只有人类才会犯的字符串比较错误,ChatGPT似乎拥有某种“直觉”? (2023-01-18//)

@老虎会游泳,估计逻辑上就不是逐字节比较吧。可能大体相同时,认为是同一个事物啥的(我也不懂)

要不,你拿同形字、零宽字啥的试试?

无名啊 13楼回复 幕后导演求将这段js代码转成php (2023-01-18//)

@幕后导演,我本地机子,和菜鸟教程的在线编辑器运行,答案都和 js 版本一致

无名啊 10楼回复 幕后导演求将这段js代码转成php (2023-01-18//)

@幕后导演@老虎会游泳,那俩字符串不一样的

<?php
$obj = "A4NjFqYu5wPHsO0XTdDgMa2r1ZQocVte9UJBvk6/7=yRnhISGKblCWi+LpfE8xzm3";
$strs = '0c4a20131ebd12f0de2b54163fe318b1e';
$strs2 = '0c4a2013ebd12f0de2b54163fe318b1e';
$r = "";

for ($i = 0; $i < strlen($strs);) {
    $ccc = $i < strlen($strs2) ? ord($strs2[$i]) : NAN; $i++;
    $iii = ($ccc) >> 2;
    $e = $i < strlen($strs2) ? ord($strs2[$i]) : NAN; $i++;
    $aaa = ((3 & $ccc) << 4) | ($e >> 4);
    $n = $i < strlen($strs2) ? ord($strs2[$i]) : NAN; $i++;
    $bbb = ((15 & $e) << 2) | ($n >> 6);
    $ccc = 63 & $n;
    is_nan($e) ? $bbb = $ccc = 64 : is_nan($n) && ($ccc = 64);
    $r = $r . $obj[$iii] . $obj[$aaa] . $obj[$bbb] . $obj[$ccc];
}
echo $r;
无名啊 8楼回复 老虎会游泳不要问ChatGPT生活常识问题,它确实不知道自己在说什么 (2023-01-17//)

@丷,我也感觉是,如果能给出资料来源供参考,就好了

无名啊 7楼回复 老虎会游泳不要问ChatGPT生活常识问题,它确实不知道自己在说什么 (2023-01-17//)

@yiluo,感觉用来入门指引、开拓思路挺好的,具体还要自己验证

下一页 上一页 (9 / 18页)

5月12日 21:01 星期天

本站由hu60wap6华为CPU驱动

备案号: 京ICP备18041936号-1