我对此的理解如下。在C中,如果给出非零值,!运算符返回0,如果给定值为0,则返回非零值。
假设您有一个C代码的小片段:
int y = 0;
int z = !y;
z的价值是什么?简单地说,!0是1吗?它是否依赖于系统?C标准规定了应该发生什么吗?今晚早些时候,我在做一些家庭作业时遇到了这些问题,处理的是位2的补码整型运算。我有个问题要解决,但我有点想弄清楚为什么会起作用。非常感谢您提供的任何信息!
我有一个由三个变量组成的集合x,y,z,我想检查它们是否都有相同的值。在我的例子中,值要么是1,要么是0,但我只需要知道它们是否都相同。目前我正在使用
if 1 == x and 1 == y and 1 == z:
sameness = True
寻找我找到的答案:
if 1 in {x, y, z}:
然而,这样做的作用是
if 1 == x or 1 == y or 1 == z:
atleastOneMatch = True
是否可以检查1是否在每个: x、y和z中?更好的是,如果x、y和z是相同的值,是否有一种更简洁的检查方法?
(如果重要的话,我使用Pyth
#include <stdio.h>
int main () {
int x, y, z;
x = y = z = 1;
++x || ++y && ++z;
printf ("x = %d\t y = %d\tz = %d\n", x, y, z);
//op : x = 2 y = 1 z = 1
//why is 'x' only incrementd?
x = y = z = -1;
++x || ++y && ++z;
鉴于此,
int w = 1;
int x = 6;
int y = 5;
int z = 0;
z = !z || !x && !y;
printf("%d\n", z);
z = x-- == y + 1;
printf("%d\n", z);
有人能解释一下,如果x-是5,y+1是6,下面的线将如何计算为1?
z = x-- == y + 1;
所以我写了这段代码来检查to整数是否可以在没有休息的情况下被除,并且它是有效的。但我需要做一些改变,这样它才能工作。我真的只想知道为什么这个小小的改变完全颠倒了我的代码的结果。这是工作代码
x = input("Erster Teiler")
y = input("Zweiter Teiler")
z = int(x)%int(y)
z1 =int(y)%int(x)
if z == 0 or z1 == 0:
print("teilbar")
else:
print("nicht teilbar")
我在
我一直在浏览ES6,假设切换到2017年的EcmaScript会很容易。
在阅读过程中,我对这段代码感到困惑。
function f (x, y = 7, z = 42) {
return x + y + z
}
f(1) === 50
它具有ES5等效
function f (x, y, z) {
if (y === undefined)
y = 7;
if (z === undefined)
z = 42;
return x + y + z;
};
f(1) === 50;
我从它中了解了默认的参数。
但是,f(1)===50
void main(void)
{
int x,y,z;
x=y=z=1;
z = x && y && ++z;//is this fine?
}
我最近开始阅读有关序列点的东西,但我不知道上面的代码示例是否正确。我知道&&运算符引入了一个序列点,所以我对表达式z=x && y && ++z的行为不是很确定,请告诉我正确的答案。
所以在c++中,1等于真
int test = 1;
if(test) {// returns true; enter if loop
passgo();
collect200dollars();
}
翻盖操作符(很抱歉没有更好的名字)能处理这个问题吗?
int test = 1;
if(!test) {// returns false; do not enter if loop
...
}else{
goToJail();
}
有相当多的类似标题的帖子,但它们似乎是由各种句法错误触发的,我还没有看到一致的模式。
using namespace std;
class A
{
public:
A(int a_) : a(a_) {}
int a;
};
int main()
{
A x{3};
A y{0};
if ((y=x).a)
cout << y.a << endl;
int i = 1;
if (int j = i)
cout << j << endl;