【问题标题】:Validation of long long Int in C behaving unusually验证 C 中的 long long Int 行为异常
【发布时间】:2012-05-01 15:39:37
【问题描述】:

我正在编写一个 MPI 程序,其中 rank 0 从文件中读取参数并使用 MPI_BCAST 在所有其他 rank 上广播参数。

我正在尝试验证获得的 long long 整数在 C 中是否非零,虽然我可以验证变量是否非零,但我无法验证相反的情况。 (我已将变量初始化为零)。我已验证广播确实可以正常工作,但我无法验证

if ((min_length==0LL) || (max_length==0LL) || (stride_length==0LL) || (nflops == 0LL))

而我可以验证它的反面,即

if ((min_length!=0LL) || (max_length!=0LL) || (stride_length!=0LL) || (nflops != 0LL))

只是为了清除这些东西,没有一个值是零,如果获得的任何值都是零,我的程序需要终止。

提前谢谢你。

【问题讨论】:

  • 您是否打算检查 all 它们是否非零或 任何 它们是否非零?
  • 我正在尝试检查其中是否有任何非零。

标签: c validation long-long


【解决方案1】:

如果您想反转/否定您的条件,请使用 de Morgan

if (min_length!=0LL && max_length!=0LL && stride_length!=0LL && nflops != 0LL) {
}

http://en.wikipedia.org/wiki/De_Morgan%27s_laws

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多