在检查strcmp函数的返回值时,我在gcc中发现了一些奇怪的行为.这是我的代码:
#include <stdio.h>
#include <string.h>
char str0[] = "hello world!";
char str1[] = "Hello world!";
int main() {
printf("%d\n", strcmp("hello world!", "Hello world!"));
printf("%d\n", strcmp(str0, str1));
}
Run Code Online (Sandbox Code Playgroud)
当我用clang编译它时,两次调用都strcmp返回32.然而,当用gcc编译时,第一个调用返回1,第二个调用返回32.我不明白为什么第一次和第二次调用strcmp在编译时返回不同的值使用gcc.
以下是我的测试环境.
我正在尝试将 -1 分配给枚举变量,如下所示:
typedef enum test {
first,
second,
}soc_ctr_type_t
soc_ctr_type_t ctype;
...
switch(type){
case 1:
ctype = first;
break;
case 2:
ctype = second;
break;
default:
ctype = -1;
}
Run Code Online (Sandbox Code Playgroud)
如果type是默认情况,ctype则应变为 -1,但事实并非如此。我printf用来调试的时候,ctype是255。
为什么ctype变成 255 而不是 -1?
背景:
通常,我们开发人员必须检查单个变量是否是众多选项中的至少一个.例如,
if ( (data == 125) || (data == 500) || (data == 750) )
{
/* ... do stuff ...*/
}
Run Code Online (Sandbox Code Playgroud)
这里的建议(尽管用C#编写)提供了一个优雅的解决方案来使用这样的switch语句,
switch ( data )
{
case 125:
case 500:
case 750:
/* ... do stuff ...*/
break;
default:
/* ... do nothing ... */
break;
}
Run Code Online (Sandbox Code Playgroud)
这适用于"或"条件,但对于否定的"或"条件如下所述是丑陋的,
if ( !( (data == 125) || (data == 500) || (data == 750) ) )
{
/* ... do stuff ...*/
}
Run Code Online (Sandbox Code Playgroud)
这可以写成
switch ( …Run Code Online (Sandbox Code Playgroud) 我正在开发一个具有非常大的源树的项目.由于源树很大,Sublime Text 3的"查找文件"功能需要相当长的时间才能完成搜索.我知道我正在搜索的符号只会出现在此源代码树的某些(可能是多个)子目录中.
有没有办法限制Sublime Text 3的"查找文件"功能来搜索项目源代码树的多个(但不是全部)子目录?
所以我有一个使用 startLockTask 命令固定到设备的应用程序,它有几个限制,因此用户无法逃离应用程序或更改设备的设置。
但是,用户应该能够通过 USB 将文件从设备传输到计算机,但是当设备连接到“新”PC 时,USB 权限对话框:由于 LockTask 模式,不会显示允许访问设备数据.
有没有办法在我的应用程序前面打开那个对话框?
题
当面对未知长度的有符号十六进制数时,如何使用Excel公式轻松将这些十六进制数转换为十进制数?
例子
Hex
---
00
FF
FE
FD
0A
0B
Run Code Online (Sandbox Code Playgroud) c ×3
android ×1
android-usb ×1
clang ×1
comparison ×1
decimal ×1
enums ×1
excel ×1
gcc ×1
hex ×1
if-statement ×1
kiosk-mode ×1
mtp ×1
sublimetext ×1
sublimetext3 ×1