标签: c

从标准输入中捕获字符,无需等待按下输入

我永远不会记得我是怎么做的,因为它对我来说很少见.但是在C或C++中,从标准输入读取字符而不等待换行符的最佳方法是什么(按回车键).

理想情况下,它也不会将输入字符回显到屏幕上.我只想捕捉击键而不影响控制台屏幕.

c c++ inputstream

163
推荐指数
11
解决办法
19万
查看次数

errno线程安全吗?

errno.h,这个变量被声明为extern int errno;我的问题是,errno在一些调用之后检查值是否安全或在多线程代码中使用perror()是否安全.这是一个线程安全变量吗?如果没有,那么替代方案是什么?

我在x86架构上使用linux和gcc.

c linux multithreading gcc

163
推荐指数
8
解决办法
4万
查看次数

extern关键字对C函数的影响

在C中,我没有注意到extern函数声明之前使用的关键字的任何影响.起初,我认为extern int f();在单个文件中定义时会强制您在文件范围之外实现它.但是我发现两者都是:

extern int f();
int f() {return 0;}
Run Code Online (Sandbox Code Playgroud)

extern int f() {return 0;}
Run Code Online (Sandbox Code Playgroud)

编译得很好,没有gcc的警告.我用过gcc -Wall -ansi; 它甚至不接受//评论.

extern 在函数定义之前使用是否有任何影响?或者它只是一个可选的关键字,对函数没有副作用.

在后一种情况下,我不明白为什么标准设计师选择用多余的关键词来乱丢语法.

编辑:澄清一下,我知道extern变量的用法,但我只是extern函数中询问.

c syntax standards

162
推荐指数
6
解决办法
18万
查看次数

C中空指针的指针算法

当一个指针到特定类型的(比如int,char,float,..)被递增,其值增加该数据类型的大小.如果void指向大小数据的指针x递增,它如何获得指向x前面的字节?编译器如何知道添加x指针的值?

c pointers void-pointers pointer-arithmetic

162
推荐指数
7
解决办法
11万
查看次数

什么是位屏蔽?

我对C编程很新,我遇到了掩码.有人可以向我解释位屏蔽的一般概念和功能吗?非常感谢例子.

c terminology bit-manipulation bitmask bitwise-operators

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

D是Java和C++的可靠替代品吗?

d语言一个可靠的替代Java和C++?如何成为一个可靠的替代方案?我应该学习它吗?它值得传福音吗?

我问的主要原因是,几乎在这里使用新的C++标准(c ++ 0x),我很清楚,对于任何理解它的人来说,语言已经远远超过了不归路.我知道C/C++永远不会死,但在某些时候我们需要继续前进.即使是COBOL也有它的一天,Java在很多方面都取消了C++.下一个是什么?D填写账单吗?

c c++ java d

161
推荐指数
8
解决办法
4万
查看次数

如何避免expr中的溢出.A B C D

我需要计算一个表达式,它看起来像: A*B - C*D,它们的类型是:signed long long int A, B, C, D; 每个数字都可以非常大(不会溢出它的类型).虽然A*B可能导致溢出,但同时表达式A*B - C*D可能非常小.我该如何正确计算?

例如:MAX * MAX - (MAX - 1) * (MAX + 1) == 1,where MAX = LLONG_MAX - n和n - 一些自然数.

c c++ overflow

161
推荐指数
9
解决办法
7762
查看次数

为什么字母表在此C代码中分为多个范围?

在自定义库中,我看到了一个实现:

inline int is_upper_alpha(char chValue)
{
    if (((chValue >= 'A') && (chValue <= 'I')) ||
        ((chValue >= 'J') && (chValue <= 'R')) ||
        ((chValue >= 'S') && (chValue <= 'Z')))
        return 1;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是复活节彩蛋还是与标准C/C++方法相比有哪些优势?

inline int is_upper_alpha(char chValue)
{
    return ((chValue >= 'A') && (chValue <= 'Z'));
}
Run Code Online (Sandbox Code Playgroud)

c c++ character toupper

161
推荐指数
2
解决办法
6279
查看次数

"for(;;)"比"while(TRUE)"快吗?如果没有,为什么人们会使用它?

for (;;) {
    //Something to be done repeatedly
}
Run Code Online (Sandbox Code Playgroud)

我已经看到这种东西使用了很多,但我觉得它很奇怪......说再说清楚while(true),还是沿着这些方向做些什么?

我猜这(因为许多程序员采用神秘的代码的原因)这是一个微小的利润更快?

为什么,它真的值得吗?如果是这样,为什么不这样定义它:

#define while(true) for(;;)
Run Code Online (Sandbox Code Playgroud)

另请参见:哪个更快:while(1)或while(2)?

c c++ optimization readability infinite-loop

160
推荐指数
17
解决办法
4万
查看次数

当char*x指向一个值等于"hello"的字符串时,如何在gdb中设置条件断点?

char* x指向值等于的字符串时,是否可以指定我希望gdb在第x行中断"hello"?如果有,怎么样?

c debugging gdb conditional-breakpoint

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