我正在比较两个字符串:
<?php
$Str1 = '111122223333444455556666';
$Str2 = '111122223333444455557777';
if($Str1 != $Str2){
// Do something
} else {
// Do something else
}
?>
Run Code Online (Sandbox Code Playgroud)
显然,$ Str1与$ Str2不同,但仍然总是执行else-block.我知道我应该在这里使用===或!==比较,但我想知道为什么(基本上)我尝试的任何其他值实际上评估它的预期方式.
我还在文档"如果字符串不包含任何字符'.','e'或'E'并且数值适合整数类型限制(由PHP_INT_MAX定义)中读到这个,字符串将是评估为一个整数.",所以我猜它不应低于或等于PHP_INT_MAX的值(这远远小于我上面评估的字符串) - 假设这是他们的意思"适合".那么为什么上面的字符串被评估为相同?它可能是一个PHP错误还是我缺少的东西?
我从昨天起使用PHP版本5.3.8,来自PHP 5.3.6.在Windows XP上运行.
我使用的Lua,前端是不幸的是过时的,所以我坚持与5.1版本在这里,这意味着bit32库是遥不可及的(这我可能已经习惯了这种转换).
所以我想知道是否有人知道我可以实现浮点到二进制(数字)函数的方法,或者更好的是浮点到十六进制.到目前为止,我能够提出的最好的是十进制到二进制/十六进制函数......
当我手动替换图标时(即不从资源管理器中的"文件夹选项"窗口),图标不会更新.例如,如果我执行此批处理代码:
REG ADD HKCR\testfile\DefaultIcon /ve /d "C:\test.ico,0" /f
Run Code Online (Sandbox Code Playgroud)
图标显示在"文件夹选项"的列表中应该显示,但图标不会在桌面或资源管理器中更新.
如果我只是点击任何文件类型的"更改图标"按钮并退出"文件夹选项"窗口,则会更新图标.但据我所知,这不能通过批处理或VBS完成.
重新启动explorer.exe可以正常工作,但如果我这样做,任务栏中的应用程序选项卡由于某种原因变得有问题(例如:当应用程序最大化时,我不能只是左键单击任务栏中的选项卡以最小化它 - 我必须直接点击它并点击最小化...).更不用说,如果我这样做,所有打开的资源管理器窗口都将关闭,这有点麻烦.
我还有一个TuneUp Utilities的副本,它有一个重新加载图标缓存的选项,这确实像预期的那样工作.但是再一次,我无法通过批处理或VBS访问此工具.它不会重新启动explorer.exe或删除任何文件(如某些解决方案).我敢肯定的这一点,因为我没有iconcache.db文件的任何地方我的操作系统驱动器上.
我也尝试通过VBS添加注册表项,但这没有帮助.
欢迎任何批处理或VBScript解决方案!
这个问题可能只是另一种不正确地解释操作员的情况.但不久之前,我看到有人发推文关于一个运营商的信息,据称可以用来检查C中的整数溢出.即&+(&符号加)运算符,它可以像这样使用:
#include <stdio.h>
#include <stdint.h>
int main()
{
uint32_t x, y;
x = 0xFFFFFFFF;
y = 1;
if (x &+ y) {
printf("Integer overflow!\n");
} else {
printf("No overflow\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它看起来确实像人们期望的那样工作,GCC 6在使用这些参数进行编译时不会给我任何警告或错误: gcc -Wall -Wextra -Werror of.c
但奇怪的是,我还没有找到关于这个运算符的任何文档,我从来没有看到它在任何地方使用过.有人可以解释一下这是如何工作的?