---
description: "Learn more about: while Statement (C++)"
title: "while Statement (C++)"
ms.date: "11/04/2016"
f1_keywords: ["while_cpp"]
helpviewer_keywords: ["while keyword [C++]", "while keyword [C++], syntax"]
ms.assetid: 358dbe76-5e5e-4af5-b575-c2293c636899
---
# while Statement (C++)
Executes *statement* repeatedly until *expression* evaluates to zero.
## Syntax
```
while ( expression )
statement
```
## Remarks
The test of *expression* takes place before each execution of the loop; therefore, a **`while`** loop executes zero or more times. *expression* must be of an integral type, a pointer type, or a class type with an unambiguous conversion to an integral or pointer type.
A **`while`** loop can also terminate when a [break](../cpp/break-statement-cpp.md), [goto](../cpp/goto-statement-cpp.md), or [return](../cpp/return-statement-cpp.md) within the statement body is executed. Use [continue](../cpp/continue-statement-cpp.md) to terminate the current iteration without exiting the **`while`** loop. **`continue`** passes control to the next iteration of the **`while`** loop.
The following code uses a **`while`** loop to trim trailing underscores from a string:
```cpp
// while_statement.cpp
#include
#include
char *trim( char *szSource )
{
char *pszEOS = 0;
// Set pointer to character before terminating NULL
pszEOS = szSource + strlen( szSource ) - 1;
// iterate backwards until non '_' is found
while( (pszEOS >= szSource) && (*pszEOS == '_') )
*pszEOS-- = '\0';
return szSource;
}
int main()
{
char szbuf[] = "12345_____";
printf_s("\nBefore trim: %s", szbuf);
printf_s("\nAfter trim: %s\n", trim(szbuf));
}
```
The termination condition is evaluated at the top of the loop. If there are no trailing underscores, the loop never executes.
## See also
[Iteration Statements](../cpp/iteration-statements-cpp.md)
[Keywords](../cpp/keywords-cpp.md)
[do-while Statement (C++)](../cpp/do-while-statement-cpp.md)
[for Statement (C++)](../cpp/for-statement-cpp.md)
[Range-based for Statement (C++)](../cpp/range-based-for-statement-cpp.md)