小编Shr*_*rey的帖子

具有lld,ld和d类型标识符的size_t变量的printf

我写了这个小代码:

#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_tunsigned 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]标签开/关切换优化,但观察结果没有任何差异.]

c printf

12
推荐指数
2
解决办法
2万
查看次数

HTML select元素onchange触发已选择的选项

我有以下包含下拉列表的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标题和其他脚本内容.]

html javascript jquery select javascript-events

12
推荐指数
1
解决办法
1万
查看次数

通过BASH查找系统上是否有"which"命令

在编写BASH脚本时,我通常使用whichLinux机器的命令(其中Linux机器指的是基于桌面的Linux操作系统,如Ubuntu,Fedora,OpenSUSE)来查找其他二进制文件的路径或可用性.据我所知,which可以搜索PATH变量集中存在的二进制文件(命令).

现在,我无法理解如何which在该机器上没有命令本身的情况下继续操作.

我的目的是创建一个可以在机器上运行的shell脚本(BASH),如果环境不够(比如缺少脚本中使用的某个命令),它应该能够正常退出.

有没有人在这方面有任何建议.据我所知,可以象使用方式locatefind等-但是,如果连他们都没有提供什么.我已经知道的另一个选择是我which在标准路径上寻找二进制的存在,如/usr/bin//bin//usr/local/bin/.还有其他可能性吗?

提前致谢.

linux bash shell

1
推荐指数
1
解决办法
276
查看次数

标签 统计

bash ×1

c ×1

html ×1

javascript ×1

javascript-events ×1

jquery ×1

linux ×1

printf ×1

select ×1

shell ×1