【问题标题】:c++ programming issue [closed]C++编程问题[关闭]
【发布时间】:2013-03-26 15:03:14
【问题描述】:

我总是得到错误((智能感知:表达式必须是可修改的左值)) 对于与“for”一起使用的表达式,请帮忙。

for (c=2 ; c <= x -1 ; c++ )
    if ( x % c = 0 )
        cout << "not prime" ;
    else cout << "prime";

【问题讨论】:

  • 这里已关闭。但是为什么每个人都错过了一个简单的点:如果数字不能被任何数字整除 - 它怎么可能是素数?让测试循环先完成!
  • @Ajay - 一个引数就是这样,它只能被一个和自身整除。你对“质数”的理解是什么?
  • @KirilKirov - 假设被检查的数字是 9.. 因此,通过循环,它被视为素数。考虑另一个数字 25,它被处理了 3 次。明白我的意思吗? (是的,当然,c%x 测试)
  • @Ajay - 是的,我知道如何检查一个数字是否为素数;)我误解了你的话。没有人注意到这一点,因为这不是 OP 的要求 - 这是一个不同的(逻辑)问题,与这里的错误无关。

标签: c++ visual-c++


【解决方案1】:

我猜你正在尝试将x % c 的结果与0 进行比较。在这种情况下,

if ( x % c = 0 )

这一定是

// --------v
if ( x % c == 0 )

注意额外的=


原因是,x % c 不返回可修改的左值并且只使用一个=,你试图将0 分配给x % c 的结果,这是错误的。

【讨论】:

    【解决方案2】:

    您在if 行中缺少=

    for (c=2 ; c <= x -1 ; c++ )
        if ( x % c == 0 )
            cout << "not prime" ;
        else cout << "prime";
    

    (不是你的代码会告诉你一个数字是否是素数;它会打印它是否是每个小于它的数字的倍数)

    【讨论】:

      【解决方案3】:

      据我所知,这里的意思可能是 == 而不是 =

      if ( x % c = 0 )
      

      像这样:

      if ( x % c == 0 )
      

      在第一种情况下,您尝试分配给% 操作的结果,这是一个临时的,不能分配给。之前的thread 涵盖了一些关于临时工的问题。这篇文章有点深入,但可能会让你更好地理解Understanding lvalues and rvalues in C and C++

      【讨论】:

        【解决方案4】:

        您缺少=

        if ( x % c == 0 )
                   ^^---- 
        

        = 是一个赋值,== 是一个相等测试。

        【讨论】:

          【解决方案5】:

          =赋值 运算符。你要找的是比较运算符==:

          if ( x % c == 0 )
          //         ^^
          

          Live Demo

          【讨论】:

            【解决方案6】:

            我想,你应该再看看x % c == 0。您将 x 模 c 的结果分配为零。

            对我来说,你的代码运行良好(Objective-C,所以没有@cout@,我们使用@NSLog();@:

            for ( c = 2; c <= x-1; c++ ) 
                if ( x % c == 0 ) NSLog(@"not prime");
                else NSLog(@"prime");
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2022-06-15
              • 2014-11-08
              • 1970-01-01
              • 2019-06-21
              • 1970-01-01
              • 1970-01-01
              • 2010-12-31
              • 2013-08-22
              相关资源
              最近更新 更多