我写了这个小代码:
#include <stdio.h>
int main() {
size_t temp;
temp = 100;
printf("lld=%lld, ld=%ld, u=%u\n", temp, temp, temp);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在带有gcc版本4.1.1 20070105(Red Hat 4.1.1-52)的i386 GNU/Linux机器上运行它.这是我得到的输出:
lld=429496729700, ld=100, u=7993461
Run Code Online (Sandbox Code Playgroud)
我可以理解第一个(lld)被打印为垃圾,因为当变量中只有4个字节可用时,printf尝试打印8个字节(用于signed long long表示lld)temp.但是,我无法理解为什么最后一个标识符u被打印为垃圾 - 而在我的理解中,这是最接近的适用标识符size_t.
这里我假设size_t是unsigned int(我的i386签名为4个字节).
现在,我对该printf线进行了一些调整:
...
printf("ld=%ld, u=%u, lld=%lld\n", temp, temp, temp);
...
Run Code Online (Sandbox Code Playgroud)
我有一个非常好的答案(lld部分除外).
ld=100, u=100, lld=34331653576851556
Run Code Online (Sandbox Code Playgroud)
有人可以帮我理解我在这里错过了什么吗?
非常感谢您的帮助!
[旁注:我尝试使用gcc -O[0,2]标签开/关切换优化,但观察结果没有任何差异.]
我有以下包含下拉列表的HTML(单选)
<script type="text/javascript">
$(document).ready(function () {
$("#garden").bind('change', function() {
alert("Changed");
});
});
</script>
<body>
<div id="content">
<select id="garden">
<option value="flowers">Flowers</option>
<option value="shrubs">Shrubs</option>
<option value="trees">Trees</option>
<option value="bushes">Bushes</option>
</select>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
呈现HTML页面Flowers时,默认情况下是下拉列表中已选中的元素(是第一个).如果我选择任何其他值("Flowers"除外),则会触发javascript函数并显示包含"Changed"的警告框.
Q1:但是,如果我再次重新选择Flowers,onchange则不会触发事件.我理解这是因为下拉列表中没有任何"更改".是否有一种方法可以触发功能,即使在下拉列表中没有更改已选择的值时也是如此?
Q2:如何提取刚刚选择的元素的值(即使没有选择任何新元素 - 也就是说,用户单击下拉列表,只需单击其他位置).
我已经尝试了"onblur",但这需要用户点击文档上的其他位置,以便下拉菜单失去焦点.任何帮助将非常感激.
非常感谢. [为了简洁起见,我在代码段中编辑了HTML标题和其他脚本内容.]
在编写BASH脚本时,我通常使用whichLinux机器的命令(其中Linux机器指的是基于桌面的Linux操作系统,如Ubuntu,Fedora,OpenSUSE)来查找其他二进制文件的路径或可用性.据我所知,which可以搜索PATH变量集中存在的二进制文件(命令).
现在,我无法理解如何which在该机器上没有命令本身的情况下继续操作.
我的目的是创建一个可以在机器上运行的shell脚本(BASH),如果环境不够(比如缺少脚本中使用的某个命令),它应该能够正常退出.
有没有人在这方面有任何建议.据我所知,可以象使用方式locate或find等-但是,如果连他们都没有提供什么.我已经知道的另一个选择是我which在标准路径上寻找二进制的存在,如/usr/bin/或/bin/或/usr/local/bin/.还有其他可能性吗?
提前致谢.