C/C++ 代码 2nd = 登录操作
C/C++ code 2nd = sign in operation
我不确定这是C代码还是C++代码,但我认为这并不重要。
在此代码中:
x -= (t = u/(1.-0.5*MIN(1.,u*(a1/x - b1/(1.-x)))));
T = U是什么意思? 它不是分配给你吗?因为它没有意义,因为它实际上在上一行中设置为其他内容:
t = exp(a1*log(x)+b1*log(1.-x) + afac);
u = err/t;
x -= (t = u/(1.-0.5*MIN(1.,u*(a1/x - b1/(1.-x)))));
if (x <= 0.) x = 0.5*(x + t);
if (x >= 1.) x = 0.5*(x + t + 1.);
T = U是什么意思?
它是一个更大的子表达式的一部分,
t = u/(1.-0.5*MIN(1.,u*(a1/x - b1/(1.-x))))
它不是分配给你吗?
不,它是将该复杂表达式的值分配给t
。然后,该赋值的结果将用于完整表达式:
x -= (t = <stuff> );
从概念上讲,这与
:t = <stuff>
x = x - t
因为它没有意义,因为它实际上在上一行中被设置为其他内容
坦率地说,整套陈述对我来说没有意义。无论如何,t
在第 1 行中设置,在第 2 行中使用,并在第 3 行中再次设置。
:
x -= (t = u/(1.-0.5*MIN(1.,u*(a1/x - b1/(1.-x)))));
| | _____________________________________/|
| | Calculate this monstrosity |
| _________________________________________/|
| Assign it to t |
________________________________________________/
Subtract that from x
在C(和类C语言(中,赋值的"结果"可以用于其他事情。因此,例如:
x = (a = a - 1); // decrements a and assigns that to x as well
x += (a = 1 - a); // toggles a between 1 and 0 and adds to x (x increases
// every second time).
C标准的相关位C11, 6.5.16 Assignment operators, paras 2 and 3
:
2/赋值运算符应有一个可修改的左操作数。
3/赋值运算符将值存储在由左操作数指定的对象中。赋值表达式在赋值后具有左操作数的值,但不是左值。赋值表达式的类型是左操作数的类型,除非左操作数具有限定类型,在这种情况下,它是左操作数类型的非限定版本。更新左操作数的存储值的副作用在左操作数和右操作数的值计算之后排序。操作数的计算是无序的。
在 C 和 C++ 中,赋值返回一个值,即左侧的值。
a = 1 + (b = 4);
相当于:
b = 4;
a = 1 + b;
所以:
x -= (t = u/(1.-0.5*MIN(1.,u*(a1/x - b1/(1.-x)))));
与以下相同:
t = u/(1.-0.5*MIN(1.,u*(a1/x - b1/(1.-x))));
x -= t;
在你的代码中:
x -= (t = u/(1.-0.5*MIN(1.,u*(a1/x - b1/(1.-x)))));
让我假设
A=(1.-0.5*MIN(1.,u*(a1/x - b1/(1.-x))));
然后该代码将变为
x -= (t = u/A);
然后它可以读作:
t = u/A;
x -= t;
如果您有任何问题,请随时提问。
使用 =
确实会分配一个值,并将返回您正在分配的值。在您的情况下,t
被分配了u/(1.-0.5*MIN(1.,u*(a1/x - b1/(1.-x)))
的结果。
整体计算:u/(1.-0.5*MIN(1.,u*(a1/x - b1/(1.-x))))
分配给t
,并且t
的值是多少,都会执行。
x=x-t
该语句可以分为两个子语句,为了可读性,它可能应该。
t = u/(1.-0.5*MIN(1.,u*(a1/x - b1/(1.-x))));
x -= t;
从本质上讲,作者将整个公式的一个子部分分配给一个中间变量(t(供以后使用。
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 重载操作程序时出错>>用于类中的字符串 memebr
- 对字符串进行位操作
- 我可以在 C++ 中的函数体之外进行操作吗?
- MPI突然停止了对多个核心的操作
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 对字符数组中的元素执行逐位操作
- 如何在directx/c++中进行平移/缩放操作
- 逐位操作的隐式类型转换
- 为什么一个向量上的多线程操作很慢
- 排序时无法执行交换操作.我做的时候它会崩溃.为什么
- 密码登录程序将永远循环并显示不正确的结果
- 位移操作和位掩码未检测到重复字符
- 如何进行特定的位操作?
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 字符串操作 - 字符计数
- 此代码中的操作流程是什么?C/C++.
- 复制和交换习惯用法与移动操作之间的交互
- 像union_这样的 Boost.Geometry 操作如何处理浮点类型的基本不精确性?
- C/C++ 代码 2nd = 登录操作