在C ++中,是否不允许在三元运算符内部使用continue(keyword)?

时间:2018-10-06 04:14:35

标签: c++

下面是代码:-

import React from 'react';

class Signup extends React.Component {
   constructor(props){
      super(props);
      this.mailRef = React.createRef();  //fixed
   }

   handleSubmit = (event) => {
      event.preventDefault();
      console.log('heyyyyyyyyyyyyyyy');
      console.log('Submit: ' + this.mailRef.current.value); //fixed
   }

语句2提示错误:-

 #include<iostream>
 using namespace std;
 int main(){
   int n, c1=0, ans=0;
   cin>>n;
   string s;
   cin>>s;
   for(int i=0; i<n; i++){//string always start with 0
     s.at(i)!='D'?++c1:--c1;//statement 1
     (c1!=0 && s.at(i)!='U')?continue:ans++;//statement 2

  }
  cout<<ans<<endl;
}

但是当我稍微更改语句2时,它不会提示错误!

  solution.cc: In function ‘int main()’:
  solution.cc:10:33: error: expected primary-expression before ‘continue’
     (c1!=0 && s.at(i)!='U')?continue:ans++;
                             ^~~~~~~~
  solution.cc:10:33: error: expected ‘:’ before ‘continue’
  solution.cc:10:33: error: expected primary-expression before ‘continue’

是否表明在三元语法中不允许继续或其他任何关键字?将非常有责任获得答案。

2 个答案:

答案 0 :(得分:3)

不,不是。 continue是一条语句,三元运算符中仅允许使用表达式。

答案 1 :(得分:1)

  1. 三元条件表达式的格式为

    cmd.Parameters.AddWithValue("@SDate", dateTimePicker1.Value.ToShortDateString());

    E1 ? E2 : E3必须是表达式的地方。

  2. 另一方面,continue是一条语句。

      

    E1, E2 and E3语句会导致跳转,就像跳转continue到循环正文的末尾一样(它可能仅出现在for,range-for,while,和do-while循环)。

总而言之,这意味着goto不会出现在三元条件中,即使该条件是上述循环之一的一部分。