[Solved] Why does this program not output anything? [closed]


The ternary ?: operator requires both output operands to either be the same data type, or at least convertible to a common data type. A char* cannot be implicitly converted to an int, but a 0 literal can be implicitly converted to a char*.

Try this instead:

#include <iostream>

int main()
{
   int test = 0;
   std::cout << ((test) ? "A String" : "") << std::endl;

   return 0;
}

Or:

#include <iostream>

int main()
{
   int test = 0;
   std::cout << ((test) ? "A String" : (char*)0) << std::endl;

   return 0;
}

If you are trying to actually output 0 when test is 0, then you have to do this instead:

#include <iostream>

int main()
{
   int test = 0;
   std::cout << ((test) ? "A String" : "0") << std::endl;

   return 0;
}

Otherwise, get rid of the ?: operator since you cannot use it to mix different incompatible data types for output:

#include <iostream>

int main()
{
   int test = 0;
   if (test)
       std::cout << "A String";
   else
       std::cout << 0;
   std::cout << std::endl;

   return 0;
}

6

solved Why does this program not output anything? [closed]