如果我尝试以下内容:
int anint;
char achar;
printf("\nEnter any integer:");
scanf("%d", &anint);
printf("\nEnter any character:");
scanf("%c", &achar);
printf("\nHello\n");
printf("\nThe integer entered is %d\n", anint);
printf("\nThe char entered is %c\n", achar);
Run Code Online (Sandbox Code Playgroud)
它允许输入一个整数,然后scanf
完全跳过第二个,这真的很奇怪,因为当我交换两个(char
scanf优先)时,它工作正常.究竟是什么错了?
我试图在我的项目中了解更多有关此内容的信息.
我目前基本上有这个:
unsigned char flags = 0; //8 bits
flags |= 0x2; //apply random flag
if(flags & 0x2) {
printf("Opt 2 set");
}
Run Code Online (Sandbox Code Playgroud)
现在我希望做一些更复杂的事情,我想要做的是应用这样的三个标志:
flags = (0x1 | 0x2 | 0x4);
Run Code Online (Sandbox Code Playgroud)
然后删除标志0x1
,并0x2
从它?我以为我可以做这样的事情应用按位NOT(和按位AND来应用它):
flags &= ~(0x1 | 0x2);
Run Code Online (Sandbox Code Playgroud)
显然,当我检查时,他们会留在那里或者某种方式.
我也不知道如何检查它们是否不存在于位标志中(所以我无法检查我之前的代码是否有效),它会是这样的吗?
if(flags & ~0x2)
printf("flag 2 not set");
Run Code Online (Sandbox Code Playgroud)
我无法从我最近的搜索中找到适用于此的任何资源,我愿意学习这些来教别人,我真的很感兴趣.如果这令人困惑或简单,我道歉.
我得到了最简单的代码来显示数据类型的sizeof(),比如说int.
#include <stdio.h>
int main() {
printf('%i', sizeof(int));
}
Run Code Online (Sandbox Code Playgroud)
无论我做什么,例如将sizeof(int)放入一个整数,或使用'zu'而不是'i',它就会把这个错误交给我:
error: invalid conversion from ‘int’ to ‘const char*’
Run Code Online (Sandbox Code Playgroud)
我的编译器有问题吗?我不明白为什么我不能打印这么简单sizeof
..
编辑:这似乎是一个printf('%s', 'foo');
还告诉我,我将int
到const char*
,如何在地球上?
我真的不想描述,因为我想要在不同的简单功能上做很多不同的小基准测试.对于我的生活,我找不到一种方法来记录C++中的毫秒数,顺便说一句,我正在使用Linux.
你能否建议以毫秒为单位获取系统时钟的方法(如果我找不到简单的方法,我可以用几秒钟来解决......)以及它们包含在哪个标题中?
我试图尝试用PDO异常做一些有用的事情而不是显示它们,但我找不到我的生活如何使用错误处理程序(set_error_handler)或任何自定义来处理PDO异常.
我现在用的try
.. catch
当然块捕获异常,我实现在一个自定义的错误处理程序catch
的一部分,或者我可以完全跳过试戴> catch块作为例外处理程序将处理它,我(通过调用or throw new exception (...)
上声明?
我想我要问的是一个示例来捕获PDO异常并记录它们或多或少(任何简单的代码是否正确我可以使用,我不是太愚蠢).
我见过一位同事在这些条件下使用它来从表中获取用户:
SELECT * FROM users WHERE gender ='male'
AND activated='yes'
AND date_registered BETWEEN '$date1' AND '$date2'
Run Code Online (Sandbox Code Playgroud)
他说有一个问题(当它AND activated='yes'
放在那里时它没有输出任何行,但没有抛出MySQL错误.
你能不这样做吗?你需要把它放在方括号或疯狂的东西关联BETWEEN
和AND
?
顺便说一下,日期格式正确.
他们询问如何捕获诸如F11或insand之类的密钥getchr不会为这些密钥返回任何内容,并且我找不到任何可以接受来自输入事件的原始输入的工作.
我现在正在尝试使用C++程序中的ncurses/curses来捕获这些键.
我的测试程序很简单,基本上是:
#include <stdlib.h>
#include <stdio.h>
#include <curses.h>
int main() {
int car;
while(c != '\b') {
c = getch();
printf("%i", c);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我当然使用它与另一个getch()函数相同,但它返回-1
无限次..我在Arch linux中使用最近的内核,在标准终端中(也在测试中xterm
)
是否需要打开某个开关才能在库中使用此getch()?
我对此感到困惑,我运行了一个查询,如
foreach($dbh->query("SELECT * FROM ...") as $row) {
...do something with row()
Run Code Online (Sandbox Code Playgroud)
但是当我var_dump $dbh
它是一个PDOstatement对象.
这引出了两个问题:
我当然可以在foreach下运行,并且执行$ arr [] = $ row,但这看起来有点傻.
我写了一个代码来解析一些东西,动态地从一个数组的数组键中生成一个数组.这是一个表单,所以奇数键有一个值,这就是问题所在.
我的代码:
//array values are not needed in my code, just junk rather
$array = array('one_a'=>2, 'three_b', 'four_c', 'five_d'=>12);
$number = array();
$letter = array();
foreach($array as $element) {
$parts = explode("_", $element);
$number[] = $parts[0];
$letter[] = $parts[1];
}
print_r($number);
Run Code Online (Sandbox Code Playgroud)
我不明白这可能会出错,但是当foreach()
迭代通过关联数组时,它会将"2"和"12"作为单独的数组键读取!这会破坏我的$explode
代码并抛出错误,因为"2"中没有错误_
.
为什么关联数组会像这样失败?我尝试明确定义as $element => $value
,不使用$ value(试图忽略它),但它会引发更多错误.
我知道这foo[bar]
等于*(foo + bar)
,但*foo[bar]
等于,例如访问*argv[2]
?我对理解这一点感到有些困惑,我认为可能有点像*(*(foo) + bar)
但不确定......
如果这是一个简单的答案,我道歉.